2016-09-01 4 views
1

Ich verwende Cython, um meine C++ - Klassen zu umbrechen. Einige Methoden geben etw zurück. wie class_name*. class_name möglicherweise einige komplizierte Klasse bereits in pxd und pyx-Datei beschrieben (wie es hier in der erweiterten Antwort https://stackoverflow.com/a/39116733/4881441 erwähnt wird). Aber Cython sagt in pyx defs, dass ich keinen Python-Typ zurückgebe. Ich möchte C++ - ähnliche Zeiger in Python zurückgeben und dann Methoden dieser Objekte verwenden und sie an C++ - Methoden übergeben.C++ - Zeiger in Cython

+1

Mögliches Duplikat von [Wie werden neue C++ - Objekte in Cython zurückgegeben?] (Http://stackoverflow.com/questions/16882625/how-to-return-new-c-objects-in-cython) – DavidW

Antwort

1

Sie können einen Zeiger nicht direkt von einer def-Methode zurückgeben (nur von einer cdef).

Sie müssen eine Cython-Wrapper-Klasse schreiben, die den Zeiger speichert, den Sie übergeben möchten, und Sie können dieses Wrapper-Objekt zurückgeben. Wenn Sie Methoden auf dem C++ - Objekt ausführen möchten, müssen Sie auch Ihren Cython-Wrapper verwenden und die Methodenaufrufe an die gespeicherte Instanz delegieren.