2012-12-19 82 views
6

我已經使用Boost.Python包裝了一個C++類。這些對象在C++端具有強引用(boost :: shared_ptr),並且在Python中也可能會有斷斷續續的強引用。到目前爲止,一切運作良好。但是,如果我從其中一個強引用創建了一個python弱引用,那麼只要最後一個python強引用消失,這個弱引用就會被刪除。我希望弱引用能夠保持活躍狀態​​,直到C++端的最後一個強引用消失。這有可能實現嗎?Boost.Python:獲取對包裝的C++對象的python弱引用

措辭另一種方式:有沒有辦法從python中找出如果特定的C++對象(由Boost.Python包裝)仍然存在?

回答

1

你如何持有一個「C++強參考」包裝類?

我對boost python很生疏,但我相信這是boost :: shared_ptr的deleter存在,它確保了生命週期管理。

如果這不是問題,您可能需要將C++實例保存在boost :: python :: object中。

+0

如您所懷疑的,我在boost :: shared_ptr中持有強引用。我澄清了這個問題。 您可否詳細說明第二段?我似乎無法爲這個問題提供聯繫 - 抱歉。 – uli