【发布时间】:2015-06-04 01:41:03
【问题描述】:
问题
我想通过引用 Cython 中的函数来传递向量。
cdef extern from "MyClass.h" namespace "MyClass":
void MyClass_doStuff "MyClass::doStuff"(vector[double]& input) except +
cdef class MyClass:
...
@staticmethod
def doStuff(vector[double]& input):
MyClass_doStuff(input)
问题
上面的代码在编译过程中没有抛出错误,但它也不起作用。 input 在方法之后根本没有改变。
我也尝试了建议in this question,但在这种情况下,cdef-函数将无法从 Python 访问(“未知成员 doStuff...”)。
是否可以通过引用传递,如果可以,如何正确执行?
编辑
这不是cython-c-passing-by-reference 的重复,因为我提到了上面部分中的问题。建议的解决方案没有实现我的目标,即让 python 函数通过引用获取参数。
【问题讨论】:
-
你打算如何在 Python 中构建一个
vector<double>?因为这是您唯一可以使用...调用该函数的方法 -
你希望如何从 python 代码中传入一个向量?
-
Cython 定义了一个 cpp 向量类来使用。在 python 级别上,列表可以正常工作。详情请见vector.pxd。
标签: python c++ pass-by-reference cython