2009-09-01 28 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 2009-09-01 12:11:11