无法在声明文件中声明libcpp.map

时间:2012-06-03 13:09:58

标签: cython

我想将C ++对象存储在libcpp.map中,但我无法使其正常工作。如果我在声明文件中声明了地图,它甚至不能用于简单的整数。

.pxd file:

from libcpp.map cimport map
cdef class MyClass:
    cdef map[int,int] store


.pyx file:

cdef class MyClass:
    def __cinit__(self):
        self.store = map[int,int]()

以下错误:

cdef map[int,int] store
          ^
C++ classes not allowed as members of an extension type,
use a pointer or reference instead

为什么这不起作用?如果我在函数中声明它正常工作。

1 个答案:

答案 0 :(得分:2)

从错误开始,您似乎需要存储指向它的指针并在堆上调用新版本 所以

cdef map[int,int] *store

self.store = new map[int,int]()