如何用boost包装c++对象.这样Python就不会自动调用它的析构函数
How to wrap c++ object with boost.Python, so that Python will never call it destructor automatically
例如,我有c++类"A"和python类"B"。类"A"用boost::python包装,所以我可以在python代码中使用它。类B有一个类型为a的成员,我在B的构造函数中创建了它。当我删除类"B"的对象时,它会自动调用c++中"A"的析构函数。我想避免这个调用,这样"B"就不会对它的成员"A"负责(这是一个包装的c++对象)。所以,我想删除我的"B"对象,并且仍然有"A"在内存中
你应该在你的"B类"中保留一个指向"a类对象"的指针,这样当"B对象"被销毁时,"a类对象"就不会被回收。
编辑:我想这可以解决你的问题。
aObjectPTR = POINTER(aObj)
现在,你有一个名为"aObjectPTR"的指针。将A类对象的名称替换为"AObj"。在此之后,您有一个指向a类对象的指针,因此指针(aObjectPTR)将只被回收,而不是它指向的对象。
相关文章:
- 什么时候调用析构函数
- C++-明确何时以及如何调用析构函数
- C++ 防止在映射中放置()时调用析构函数
- 调用析构函数以释放动态分配的内存
- C++:使用方法调用析构函数的顺序是什么?
- 向量推回调用析构函数时调用析构函数
- 如何在调用析构函数时优雅地停止/销毁带有阻塞调用C++线程?
- C++,我应该调用析构函数吗?
- 如何获取有关在 Clang LibTooling 中调用析构函数的信息?
- 当我从 std::vector 中的新放置调用析构函数时会发生什么?
- 为什么这里不调用析构函数
- 在调用 std::bind 的产品后意外调用析构函数
- 为什么在传递给函数而不是构造函数时调用析构函数?
- 如何在C++中调用析构函数
- 为什么为未删除的对象调用析构函数?
- 调用析构函数时出错
- C++ 在不释放内存的情况下调用析构函数
- 为什么在运算符删除中不调用析构函数?
- C++ 调用析构函数后动态模板队列"double free or corruption (out)"
- 在 postOrderDelete 上调用析构函数时引发的异常