2009-09-01 4 views
0

新しいクラスインスタンス(C++クラスを継承するpythonクラス)をオブジェクトの戻り値を保持してC++ポインタとして扱うことなく、C++に転送する方法はありますか。例えばPythonオブジェクトのスコープがC++で終了する

C++

object pyInstance = GetLocalDict()["makeNewGamePlay"](); 
CGEPYGameMode* m_pGameMode = extract< CGEPYGameMode* >(pyInstance); 

pyth:

class Alpha(CGEPYGameMode): 
    def someFunct(self): 
    pass 

def makeNewGamePlay(): 
    return Alpha() 

pyInstanceはPythonのクラスのインスタンスであり、m_pGameModeが同じインスタンスのC++基底クラスへのポインタです。しかし、私はポインタを格納し、オブジェクトがスコープの外に出るようにすると、Pythonオブジェクトがクリーンアップされます。オブジェクトがクリーンアップされているだけでC++ポインタを持つ方法はありますか?

さらに詳しい情報:python object to native c++ pointer

答えて

2

あなたはpyInstanceのreference countをインクリメントする必要があります。そうすれば、Pythonはそれを削除できなくなります。それを削除する準備ができたら、単純に参照カウントを減らして、Pythonがあなたのためにそれをクリーンアップします。

+0

ありがとうございます。 :P – Lodle

関連する問題