Я хочу вернуть член класса std :: string по константной ссылке:
struct S
{
const std::string& getStr() const
{
return _str;
}
private:
std::string _str;
};
Поэтому я добавил отображение Boost Python для доступа к этому члену с помощью метода:
class_<S>("S")
.def_readonly("str", &S::getStr);
Тем не менее, я получаю ошибку компилятора, когда Boost Python не может согласовать константную строку C ++ с Python строкой:
error: type 'const boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> > &>' does not provide a call operator
return rc( (tc().*f)(BOOST_PP_ENUM_BINARY_PARAMS_Z(1, N, ac, () BOOST_PP_INTERCEPT)) );
Какой стандартный способ достижения этого?
Я пытался:
class_<S>("S")
.def_readonly("str", &S::getStr, return_value_policy<copy_const_reference>());
, но он все равно не скомпилируется:
error: no matching member function for call to 'def_readonly'