小编dma*_*dma的帖子

使用引用参数提升python方法调用

我试图通过从python引用到C++类方法来进行简单的调用.

我的C++代码如下所示:

class Foo {
protected:
  int _internalVal;
public:
  Foo() : _internalVal(5){}
  void getVal(int& val_io) {val_io = _internalVal;}
  void getValDoesNothing(int val_io) {val_io = _internalVal;}
}
Run Code Online (Sandbox Code Playgroud)

我编译好的boost包装器代码是:

BOOST_PYTHON_MODULE(libBar) {
  boost::python::class_<Foo>("Foo")
    .def("getVal", &Foo::getVal)
    .def("getValDoesNothing", &Foo::getValDoesNothing);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我进行以下python调用时:

In [1]: import libBar

In [2]: f = libBar.Foo()

In [3]: f
Out[3]: <libBar.Foo at 0x2b483c0>

In [4]: val = int()

In [5]: #next command is just to check function signature type

In [6]: f.getValDoesNothing(val)

In [7]: f.getVal(val)
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last) …
Run Code Online (Sandbox Code Playgroud)

c++ python boost boost-python

6
推荐指数
1
解决办法
4003
查看次数

标签 统计

boost ×1

boost-python ×1

c++ ×1

python ×1