파이썬에서 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;}
}
내 부스트 래퍼 코드 :
BOOST_PYTHON_MODULE(libBar) {
boost::python::class_<Foo>("Foo")
.def("getVal", &Foo::getVal)
.def("getValDoesNothing", &Foo::getValDoesNothing);
}
나는 다음과 같은 파이썬 전화를 걸 그러나 때
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)
<ipython-input-5-531e4cea97c2> in <module>()
----> 1 f.getVal(val)
ArgumentError: Python argument types in
Foo.getVal(Foo, int)
did not match C++ signature:
getVal(Foo {lvalue}, int {lvalue})
I을 내가 제어 할 수없는 라이브러리로 작업하고있어 값을 반환하기 위해 getVal을 변경하는 것은 옵션이 아닙니다.
마지막 파이썬 명령을 작동시키는 방법이 있습니까?
파이썬 변수를 변경하지 않지만 여전히 함수 호출을 허용하는 픽스를 취할 것입니다.
내가 참조로 전달하고 있음을 알고 있습니다. 내 질문은 어떻게해야합니까? –