我想将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
为什么这不起作用?如果我在函数中声明它正常工作。
答案 0 :(得分:2)
从错误开始,您似乎需要存储指向它的指针并在堆上调用新版本 所以
cdef map[int,int] *store
self.store = new map[int,int]()