2012-03-06 58 views
4

我有一些C++代碼,可提供事件Python對象跟蹤一個對象的CPython的壽命。觀察家們不停地爲weak_ptr S,所以他們沒有註銷。從C擴展

這適用於C++,但橋接弱指針和Python弱引用很麻煩(我還希望Python事件處理程序不會因訂閱而保持活動狀態,與C++代碼中相同)。爲了有一個活觀察者,一些需要有一個共享指針到它,而該對象是活的,所以它歸結爲具有在Python土地控制觀察者一個C++對象觀察者的壽命。

到目前爲止,我所提出的方法涉及大量的樣板和中間對象(例如爲一個類型創建另一個PyTypeObject,該類型保留一個C++觀察者和一個對Python觀察者的弱引用並將其設置爲成員Python的觀察者,這樣它就會死亡)。

的問題是,是否有任何明顯的方式做到這一點?

回答

0

我會在C++模塊上編寫一個python包裝器,並派發到python包裝器中的python觀察器。這足夠嗎?

當你提到某事需要共享指針時,如果共享指針在堆棧上,直到給定的觀察者返回,是否就足夠了?