Я новичок в boost.python и пытаюсь выставить возвращаемое значение функции на python.
Функциональная подпись выглядит следующим образом:
std::unique_ptr<Message> someFunc(const std::string &str) const;
При вызове функции в python я получаю следующую ошибку:
TypeError: No to_python (by-value) converter found for C++ type: std::unique_ptr<Message, std::default_delete<Message> >
Мой вызов функции в python выглядит следующим образом:
a = mymodule.MyClass()
a.someFunc("some string here") # error here
Я попытался открыть std:: unique_ptr, но просто не могу заставить его работать. Кто-нибудь знает, как правильно выставить класс указателя? Спасибо!
Edit: Я попробовал следующее:
class_<std::unique_ptr<Message, std::default_delete<Message>>, bost::noncopyable ("Message", init<>())
;
Этот пример компилируется, но я все еще получаю ошибку, упомянутую выше.
Кроме того, я попытался открыть класс Message
class_<Message>("Message", init<unsigned>())
.def(init<unsigned, unsigned>())
.def("f", &Message::f)
;