Boost: python выставить const std::string& [дубликат]Python

Программы на Python
Ответить
Anonymous
 Boost: python выставить const std::string& [дубликат]

Сообщение Anonymous »

Я понимаю, что std::string предоставляется Python неявными преобразователями, которые не требуют регистрации.
Однако const std::string& не является таковым
У меня

Код: Выделить всё

class Cal {
const std::string& get_name() const;
};
и класс Python eqv

Код: Выделить всё

namespace bp=boost::python;
bp::class_("Cal")
.add_property("name",
make_function(&Cal::get_name, bp::return_value_policy()));
и регистрация конвертера

Код: Выделить всё

bp::to_python_converter{};
Однако из Python, когда я звоню

Код: Выделить всё

cal.name
Я получаю эту ошибку:

Код: Выделить всё

No Python class registered for C++ class std::__cxx11::basic_string
чего я не понимаю, поскольку преобразователь std::string зарегистрирован неявно.
Я пытался зарегистрировать преобразователь для const std::string&, но это не удается скомпилировать, поскольку код bp пытается получить указатель на const std::string&, а затем утверждает «указатель на ссылку»

Подробнее здесь: https://stackoverflow.com/questions/793 ... -stdstring
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»