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

MMM*_*MMM 2 python boost

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

class holiday_calendar {
public:
  const std::string& get_name() const;
  void set_name(const std::string&);
};
Run Code Online (Sandbox Code Playgroud)

我使用过这个曝光代码

class_<holiday_calendar>("holiday_calendar")
.def("getname", &holiday_calendar::get_name, return_internal_reference<>())
.def("setname", &holiday_calendar::set_name);
Run Code Online (Sandbox Code Playgroud)

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

Lyn*_*nch 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);
Run Code Online (Sandbox Code Playgroud)