2017-09-12 17 views
1

私は、一部のクラスがstd::vector<T>を返すメソッドを持つC++ライブラリを持っています。ここで、Tはライブラリのカスタムクラスです。この出力をPythonリストにラップする方法はありますか?戻りベクトル<T> swig

よろしくお願いいたします。

答えて

2

はい、確かに可能です。

C++クラスの公開インターフェイスはwrapped by SWIGです。

そして、SWIGは以下のように使用することができますstd::vectorためtypemapsを持っています

%include "typemaps.i" 
%include "std_vector.i" 
%{ 
#include "MyClass.h" 
%} 

%template(MyVector) std::vector<MyClass>; 
+0

私はあなたが提案し何やってんだけど、Pythonで述べたメソッドの戻りとして、私は次のことを見ている: < swigオブジェクトタイプ 'std :: vector < MyClass > *' at 0x7fba76e1d570> swig/pythonが 'std :: vector < MyClass > *'型のメモリリークを検出しましたが、デストラクタは見つかりませんでした。 何か不足していますか? – user20679

+0

上のエラーは、.iファイルの書式設定エラーが原因です。結局のところ、リストを復元するために実際のtypemapを書く必要がありました(実際に返されるオブジェクトはPythonリストではなく、MyVector型オブジェクトです。リストとして動作します)。私は完全なソリューションを投稿します。ありがとうございました。 – user20679

関連する問題