我正在使用 SWIG 打包一段 C ++ 代码,以便从 Python 中使用它。
假设我在C ++中有一个“ Array< T> ”用户定义的类,我想从Python中计算这行代码:
myArray = MySWIGModule.getObject().myArray
其中方法“ getObject()”返回一个类“Object”,其中包含( Array< float> 类型的属性“myArray”(除此之外) ”
当我想要打印 myArray 的内容或类型时,我明白这一点:
<Swig Object of type 'Array< float > *
但我想获得的是:
<class 'MySWIGModule.FloatArray'>
我尝试了许多不同的解决方案但没有成功。你知道如何实现这个结果吗?谢谢!
答案 0 :(得分:0)
写
%template(FloatArray) Array<float>
拥有SWIG use that name in the interface。这应该是完美的启用包装类;但是,如果它实际上是指针,SWIG可能仍然使用模板名称。
另外,要注意生命周期问题:当Python的对它的引用被删除时,很容易得到一个指向对象部分的指针。