BoostPython默认参数丢失

时间:2016-12-16 12:19:16

标签: python c++ boost

确定。我的游戏引擎是用C ++编写的,并使用Boost :: Python来解释python的脚本。您可以从python手动创建场景和对象。我知道在从成员函数中包装默认参数时使用BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS。例如,Translate函数使用3D向量和变换空间,默认情况下为TS_WORLD。这很好用。当函数返回对象并需要return_value_policy定义时,问题就开始了。例如。 Scene类具有CreateCamera函数(std :: string name =""),if参数设置将命名相机,否则它将自己生成名称。函数返回Camera类的指针。这是我的Python代码:

allow users="?"

编译没有问题。但是当从python调用时:

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(CreateCamera_Overload, Scene::CreateCamera, 0, 1);
de
class_< ...
.def("CreateCamera", &Scene::CreateCamera, return_value_policy<reference_existing_object>(), CreateCamera_Overload());

...我收到以下错误:

Boost.Python.ArgumentError:Scene.CreateArea(Scene)中的Python参数类型 与C ++签名不匹配:      CreateCamera(类Scene {lvalue},类std :: basic_string,类std :: allocator&gt;)

它以某种方式错过了默认参数。如果我传递#&#34;&#34;的相机的名称,该函数不会抛出错误。如果我将函数更改为void并跳过return_value_policy(显然不对),那么它可以正常工作。任何想法可能是什么问题?

0 个答案:

没有答案