我有下面的C++类,我想把它们暴露给Python。在
class PlainOldData
{
...
};
class FancyClass
{
public:
const PlainOldData& GetMyPOD() {return myPOD;}
private:
PlainOldData myPOD;
};
因为我希望python类是python类,所以我希望将myPOD公开为一个属性。但是,当我尝试执行以下操作时:
^{pr2}$我得到以下错误:error C2027: use of undefined type 'boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<T>'
但是,如果我尝试指定呼叫策略,例如:
class_<FancyClass>("FancyClass", init<>())
.add_property("myPOD", &FancyClass::GetMyPOD, return_value_policy<copy_const_reference>());
我收到了一条难以置信的长错误消息。在
是否可以将此函数作为属性公开;我是否做错了什么?在
与Python的^{} 如何传递Python可调用对象类似,^{} 函数可以接受可以用CallPolicies创建的Python可调用对象,例如从^{} 返回的对象。在
例如,原始代码中的属性可以公开如下:
下面是一个完整的最小示例:
^{pr2}$交互式使用:
相关问题 更多 >
编程相关推荐