例如,我有C ++类“A”和python类“B”。用boost :: python包装的类“A”,所以我可以在我的python代码中使用它。类“B”有“A”类型的成员,我在“B”的构造函数中创建它。当我删除类“B”的对象时,它会自动在C ++中调用“A”的析构函数。我想避免这个调用,因此“B”不会对其成员“A”(即包装的c ++对象)负责。所以,我想删除我的“B”对象,并且在内存中仍然有“A”。
答案 0 :(得分:0)
你应该将“B类”中的指针保存到“A类对象”中,这样当“B对象”被破坏时,“A类对象”不会被回收。
修改强>
我认为这可以解决您的问题:
aObjectPTR = POINTER(aObj)
现在,您有一个名为“aObjectPTR”的指针。 而不是“AObj”代替你的A类对象的名称。 之后,您有一个指向A类对象的指针,因此指针(aObjectPTR)将仅被回收,而不是它指向的对象。