我正在使用 SWIG 包装一段 C++ 代码,以便在 Python 中使用它。
假设我在 C++ 中有一个“Array< T >”用户定义类,我想从 Python 计算这行代码:
myArray = MySWIGModule.getObject().myArray
方法“getObject()”返回一个类“Object”,其中包含(除其他外)“Array
当我想打印myArray 的内容或类型时,我得到这个:
<Swig Object of type 'Array< float > *
但是我想得到的是这样的:
<class 'MySWIGModule.FloatArray'>
我尝试了许多不同的解决方案,但都没有成功。你知道如何达到这个结果吗?谢谢!
最佳答案
写
%template(FloatArray) Array<float>
拥有 SWIG use that name in the interface .在启用包装器类的情况下,这应该是完美的;但是,如果它实际上是一个指针,SWIG 可能仍会使用模板名称。
另外,请注意生命周期问题:当 Python 引用被删除时,很容易获得指向对象部分的指针,该部分对象将被销毁。
关于python - <Array<float> 类型的 Swig 对象 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865052/