boost.python没有为C ++类std :: string注册的Python类

时间:2014-10-04 22:11:24

标签: python boost

从python运行c ++类成员函数时,我收到此错误:     没有为C ++类std :: string注册Python类 成员函数是:

class holiday_calendar {
public:
  const std::string& get_name() const;
  void set_name(const std::string&);
};

我使用过这个曝光代码

class_<holiday_calendar>("holiday_calendar")
.def("getname", &holiday_calendar::get_name, return_internal_reference<>())
.def("setname", &holiday_calendar::set_name);

我可以实例化对象holiday_calendar,我可以在上面调用setname('SOMENAME') 但调用getname()失败并出现上述错误

1 个答案:

答案 0 :(得分:5)

您的方法get_name返回const std::string&,请尝试:

class_<holiday_calendar>("holiday_calendar")
.def("getname", &holiday_calendar::get_name, return_value_policy<copy_const_reference>())
.def("setname", &holiday_calendar::set_name);