Python 用の SWIG を使用して抽象 C++ クラスをラップしていますが、seg fault の問題が発生しています。これは、私が扱っているコードの簡略化されたバージョンです。(「Changes」は列挙型です。)
フー。
class Foo
{
public:
virtual ~Foo() {};
virtual void OnStateChange(Changes change) = 0;
};
次に、Python で。
test.py
class MyFoo(Foo):
def __init__(self):
super(MyFoo).__init__(self)
def OnStateChange(self, change):
print("the state has changed to", change)
次に MyFoo のインスタンスを (SWIG でラップされた関数を介して) C++ ライブラリに渡し、C++ コードは OnStateChange の呼び出しを試みます。最初に呼び出されたときに print ステートメントからの出力が表示され、2 回目にはプログラムがセグ フォールトでクラッシュします。
私がやろうとしていることの実装に関するhttp://www.swig.org/Doc1.3/Python.html#Python_directorsの SWIG ドキュメントを読み、ディレクターを有効にしました。これでは十分な情報が得られないことは承知していますが、ここ数日間、さまざまな情報を検索してきましたが、満足のいくものは見つかりませんでした。前もって感謝します。