如何在python中取消引用swig float引用?

时间:2012-01-21 12:24:53

标签: python swig

我使用C ++和swig进行一些计算。为了简化它,我们假设它看起来像这样:

struct TestIt{
  TestIt(float x):x(x){};
  inline float& getIt() {return x;};
  float x;
};

现在我想使用getIt()函数并打印浮点值。

使用

testee = matching.TestIt(42)
print(testee.getIt())

我得到了

<Swig Object of type 'float *' at 0x1cb1690>

这是有道理的,因为getIt返回一个引用。如何取消引用它/从中获取python float(不更改c ++代码)?

1 个答案:

答案 0 :(得分:1)

查看herehere。你可以在SWIG模块中写这样的东西:

%pointer_class(float, floatp)

这将允许您在Py​​thon代码中执行此操作:

print(testee.getIt().value())

如果您直接使用C ++头文件,则需要更改SWIG模块或编写一个模块。但是你可以从那里简单地包含你的C ++标题。