如何在 python 中取消引用 swig float 引用?
我使用 C++ 和 swig 来做一些计算。为了简化它,我们假设它看起来像这样:
struct TestIt{
TestIt(float x):x(x){};
inline float& getIt() {return x;};
float x;
};
现在我想使用 getIt() 函数并打印浮点值。
对于
testee = matching.TestIt(42)
print(testee.getIt())
I get
<Swig Object of type 'float *' at 0x1cb1690>
这是有道理的,因为 getIt 返回一个引用。我怎样才能取消引用它/从中得到一个Python浮点(不改变C++代码)?
I use C++ and swig to do some calculations. To simplify it, lets assume it looks like this:
struct TestIt{
TestIt(float x):x(x){};
inline float& getIt() {return x;};
float x;
};
Now I want to use the the getIt()
function and print the float value.
With
testee = matching.TestIt(42)
print(testee.getIt())
I get
<Swig Object of type 'float *' at 0x1cb1690>
which makes sense, because getIt returns a reference. How can I dereference it/get a python float out of it (without changing the c++ code)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看看这里和此处。您可以在 SWIG 模块中编写类似以下内容:
这将允许您在 Python 代码中执行此操作:
您将需要更改 SWIG 模块,或者如果您直接使用 C++ 头文件,则编写一个模块。但是您可能只需从那里包含您的 C++ 头文件就可以逃脱惩罚。
Have a look here and here. You'd write something like this in your SWIG module:
That will let you do this in your Python code:
You will need to change your SWIG module, or write one if you are swigging the C++ header file directly. But you can probably get away with simply including your C++ header from there.