0
例如,我有C++類「A」和python類「B」。用boost :: python包裝的類「A」,所以我可以在我的Python代碼中使用它。類「B」有一個類型爲「A」的成員,我在「B」的構造函數中創建它。當我刪除類「B」的對象時,它會自動在C++中調用「A」的析構函數。我想避免這個調用,所以「B」不會爲其成員「A」(即包裝的C++對象)負責。所以,我想刪除我的「B」對象,並且在內存中仍然有「A」。如何用boost.Python包裝C++對象,以便Python永遠不會自動調用它的析構函數
我怎麼能用python和boost來實現它? – user733662 2011-05-01 22:31:27
感謝您的快速回復,但這沒有幫助。當我寫了tmp = POINTER(MyClass(args ...))和VS中的debuggin時,我發現MyClass的析構函數在構造函數之後被調用。 – user733662 2011-05-02 12:46:24
@ user733662:在你的說明中,你寫了「POINTER(MyClass(args ...))」,「MyClass(args ...)」表示你創建了一個新的對象,所以當它有回收時沒有任何參考。而且你必須在類中聲明你的指針變量全局而不是在構造函數中。並且對AObject的引用必須傳遞給The B Class的構造函數。我認爲你應該提供代碼,因此可以更容易地識別失敗。 – Sherif 2011-05-04 09:06:48