如何将python包添加到已经swig包装的C ++类中

时间:2014-06-20 23:30:56

标签: python c++ swig wrapping

我在C++中有一个简单的用户定义的StringList类。它的底层容器是std :: vector。

在python中使用这个类时,只要python包装对象返回,就可以将任何StringList对象转换为Python列表。

StringList类确实包含一个函数getContainer(),它确实返回对底层vector<string>对象的引用,我认为这个函数可以某种方式使用?

例如,C ++代码

Raven aRaven;
StringList molecules;
molecules = aRaven.getMoleculesInDB();

用分子名(字符串)列表填充分子对象。

在Python中,这看起来像这样,包括循环遍历列表的代码:

aRaven = Raven()
molecules = aRaven.getMoleculesInDB()

print 'There are ' + `molecules.count()` +' available.' 
for mol in range(molecules.count()):
    molName = molecules.at(mol)                
...

最好不要在aRaven.getMoleculesInDb()中创​​建一个StringList对象,而是创建一个带有字符串的Python列表(来自底层的std :: vector容器)。然后用户可以写

aRaven = Raven()
molecules = aRaven.getMoleculesInDB() # <--- Returns a Python list of strings

for molName in molecules:
    print 'molName'
...

有关如何在swig接口文件中实现此目的的任何指示?

0 个答案:

没有答案