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)
;

Antworten auf die Frage(4)

Ihre Antwort auf die Frage