Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
派生类方法的Boost::python包装器 我有C++类及其包装为Booo::Python: 类CApp { 公众: 虚拟boolfoos(){};//现在不重要 布尔运行(常量字符*第一,常量字符*最后) { ... 返回“正在运行…” }; 结构pyApp:CApp,包装器//派生类 { …//虚拟方法的包装器 } #包括 使用名称空间boost::python; BOOST_PYTHON_模块(myApp) { 类(“CApp”,init()) ... .def(“Run”、&pyMOOSApp::Run); }_Python_Boost_Wrapper_Derived - Fatal编程技术网

派生类方法的Boost::python包装器 我有C++类及其包装为Booo::Python: 类CApp { 公众: 虚拟boolfoos(){};//现在不重要 布尔运行(常量字符*第一,常量字符*最后) { ... 返回“正在运行…” }; 结构pyApp:CApp,包装器//派生类 { …//虚拟方法的包装器 } #包括 使用名称空间boost::python; BOOST_PYTHON_模块(myApp) { 类(“CApp”,init()) ... .def(“Run”、&pyMOOSApp::Run); }

派生类方法的Boost::python包装器 我有C++类及其包装为Booo::Python: 类CApp { 公众: 虚拟boolfoos(){};//现在不重要 布尔运行(常量字符*第一,常量字符*最后) { ... 返回“正在运行…” }; 结构pyApp:CApp,包装器//派生类 { …//虚拟方法的包装器 } #包括 使用名称空间boost::python; BOOST_PYTHON_模块(myApp) { 类(“CApp”,init()) ... .def(“Run”、&pyMOOSApp::Run); },python,boost,wrapper,derived,Python,Boost,Wrapper,Derived,编译是可以的,但是当我调用Python代码时 来自myApp导入的* pyApp类(CApp): 定义初始化(自): 打印“INIT-->” CClass=CApp() pyClass=pyApp() 运行('myApp','bar')) 运行('myApp','bar')) 我有一个错误: INIT--> Running... // this is from CClass.Run Traceback (most recent call last): File "./pytest.py"

编译是可以的,但是当我调用Python代码时

来自myApp导入的
*
pyApp类(CApp):
定义初始化(自):
打印“INIT-->”
CClass=CApp()
pyClass=pyApp()
运行('myApp','bar'))
运行('myApp','bar'))
我有一个错误:

INIT-->
Running... // this is from CClass.Run
Traceback (most recent call last):
File "./pytest.py", line 18, in <module>
pyClass.Run('myApp','bar')
Boost.Python.ArgumentError: Python argument types in
CApp.Run(pyApp, str, str)
did not match C++ signature:
Run(CApp {lvalue}, char const*, char const*)
但唯一的变化是在最后一次中风中:

did not match C++ signature:
Run(pyApp {lvalue}, std::string, std::string)
我很确定Run方法的包装不好,因此任何帮助都将不胜感激。
谢谢。

我刚才看到了你的另一个问题(),相信这有相同的解决方案。如果在派生类中提供了init,则需要在基类上调用init()。请参见我的解决方案-