我有一个C++类,其中一个变量是一个动态数组。这是非常简单的,目前仅用于测试目的:如何使用Python访问属于对象的动态C++数组变量?
class testClass {
public:
int *x;
testClass();
~testClass();
};
变量x
被初始化一些值,目前通过构造。我试图通过Cython来编写C++类的python包装代码,它可以访问x
。我怎样才能做到这一点?
最好的事情是能够在不复制大量数据的情况下访问变量,因为x
可能很大。我可以作为数组访问吗?
例如,它的行为如numpy数组,可能只能读取?我希望能够在使用python的其他计算中使用x
中的数据,所以numpy数组是首选。
我想我可以做一个GET
方法初始化numpy的阵列,通过它,它给GET
方法,并与来自x
与循环中的数据填充它,但这将复制的数据,似乎并不十分优雅。希望有更好的解决方案。
我试着用一个静态数组,并找到了一种解决方案。如果x
是静态的,我可以做一个.pyx
文件中的以下内容:
cdef extern from "testClass.h":
cdef cppclass testClass:
testClass()
int x[5]
cdef class pyTestClass:
cdef testClass *thisptr
def __cinit__(self):
self.thisptr = new testClass()
def __dealloc__(self):
del self.thisptr
property x:
def __get__(self):
return self.thisptr.x
如果我在Python访问x
,我会得到与值回Python列表。
如何使用Python访问属于对象的动态C++数组变量?
你的课似乎很奇怪,因为你没有存储长度/形状值。你怎么知道数组中有多少个值? – BeRecursive