Boost.Python: Wie wird std :: unique_ptr verfügbar gemacht?
Ich bin ziemlich neu in boost.python und versuche, den Rückgabewert einer Funktion für Python verfügbar zu machen.
Die Funktionssignatur sieht folgendermaßen aus:
std::unique_ptr<Message> someFunc(const std::string &str) const;
Beim Aufruf der Funktion in Python erhalte ich folgende Fehlermeldung:
TypeError: No to_python (by-value) converter found for C++ type: std::unique_ptr<Message, std::default_delete<Message> >
Mein Funktionsaufruf in Python sieht so aus:
a = mymodule.MyClass()
a.someFunc("some string here") # error here
Ich habe versucht, std :: unique_ptr verfügbar zu machen, kann es aber nicht zum Laufen bringen. Weiß jemand, wie man die Zeigerklasse richtig verfügbar macht? Vielen Dank!
Bearbeiten: Ich habe folgendes versucht:
class_<std::unique_ptr<Message, std::default_delete<Message>>, bost::noncopyable ("Message", init<>())
;
Dieses Beispiel wird kompiliert, aber ich erhalte immer noch den oben genannten Fehler. Außerdem habe ich versucht, die Klasse zu entlarvenMessage
selbst
class_<Message>("Message", init<unsigned>())
.def(init<unsigned, unsigned>())
.def("f", &Message::f)
;