我正在尝试使用以下两种方式包装一些包含使用指针的类的C ++头文件:
1)作为一个类的数据成员的数组 2)作为数组作为函数的参数
这些类将在Python中进行子类化,并且要覆盖这些方法。
示例头文件看起来像这样:
struct Array{
int * array;
int array size;
}
class A{
public:
//Meant to be accessed as an array
virtual void func( int size, double * array) = 0;
virtual bool func2(long size1, long size2, float * array1, int * array2) = 0;
}
在所有情况下,阵列的大小都是静态的。但是,在某些情况下,数组已经初始化,而在其他情况下,它们没有(因此指针= NULL)。
我需要弄清楚的是:
1)如果C ++数组是类的数据成员,如何包装它? 2)如何处理作为参数传递给函数的C ++数组? 3)如何在Python中分配和初始化包装数组? 4)如何包装C ++数组,以便将Python中的更改传递回原始数组,并且对原始数组的更改将反映在Python中?
编辑:
我不是要求为SWIG,cytpes,Cython和Boost-Python讨论所有四个问题的答案。对所有这四个问题的讨论会很好,但是,我意识到这有点问题。
我倾向于使用SWIG的响应。但是,我标记了所有四个,因为在尝试自己找到这个问题的解决方案时,我发现有关于如何为任何Python扩展系统实现这一点的稀疏信息。
我希望在尝试包装C ++代码时为重复出现的问题创建一个良好的起点。