包装静态C++;Python的数组 我正在尝试用下面的两种方法来包装一些使用指针的类的C++头文件:

包装静态C++;Python的数组 我正在尝试用下面的两种方法来包装一些使用指针的类的C++头文件:,python,swig,ctypes,cython,boost-python,Python,Swig,Ctypes,Cython,Boost Python,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;

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和boostpython讨论所有四个问题的答案。讨论这四个问题会很好,但是,我意识到这要求有点高

我更喜欢使用SWIG的响应。然而,我标记了所有四个,因为在我自己试图找到这个问题的解决方案时,我发现关于如何为任何Python扩展系统实现这一点的信息很少。


我希望在试图包装C++代码时为一个重复出现的问题创造一个好的起点。p> 你希望我们列举你在这篇文章中提到的四个Python扩展系统的所有四个问题的答案吗。还要注意关于使用
numpy
的问题中的提示。如果仍然有问题,请发布代码。