2011-03-06 90 views
0

我试图让一个C++库作为Python模块提供。看起来SIP是这份工作的最佳工具。 (如有错误,欢迎指正。)SIP如何处理返回int的C++方法*

一类貌似程序员试图绕过C'S缺乏动态类型:

class Item{ 
    private: 
    enum ITEMTYPE{TYPE_INT,TYPE_FLOAT,TYPE_INT_ARRAY,TYPE_FLOAT_ARRAY}; 
    enum ITEMTYPE type; 
    int intValue; 
    int* intArrayValue; 
    float floatValue; 
    float* floatArrayValue; 
    public: 
    enum ITEMTYPE getType(); 
    int getItemCount(); 
    int getIntValue(); 
    int* getIntArrayValue(); 
    float getFloatValue(); 
    float* getFloatArrayValue(); 
    ... 
}; 

我找不到文档的任何地方,说如何处理功能返回数组。至少,我希望能够从Python中调用getIntArrayValue()。更好的办法是有一个自动调用getType()的Python函数,然后调用其中一个get ??? Value()来获取该值(如果需要,调用getItemCount()来确定数组长度,处理数组。作为numpy的或元组

我现在.sil文件是这样的:提前

class Item{ 
%TypeHeaderCode 
#include<Item.h> 
%End 
public: 
    enum ITEMTYPE{ 
    TYPE_INT=0, 
    TYPE_FLOAT=1, 
    TYPE_INT_ARRAY=2, 
    TYPE_FLOAT_ARRAY=3, 
    }; 
    ITEMTYPE getType(); 
    int getItemCount(); 
    int getIntValue(); 
//int*getIntArrayValue(); 
    float getFloatValue(); 
//float*getFloatArrayValue(); 
}; 

谢谢,我一直在寻找这么辛苦,但都拿出了空

回答

0

我不。 t知道sip,但我用swig把C++包装到python模块中,它非常简单,swig可以处理大多数标准C++数据类型(包括标准库包含自动)。