6

我已经使用 Boost.Python 包装了一个 C++ 类。这些对象在 C++ 端具有强引用(boost::shared_ptr),Python 中也可能存在间歇性强引用。到目前为止,一切正常。但是,如果我从其中一个强引用创建一个 python 弱引用,那么一旦最后一个 python 强引用消失,这个弱引用就会被删除。我希望弱引用保持活跃,直到 C++ 端的最后一个强引用也消失。有可能实现吗?

换一种说法:有没有办法从 python 中找出一个特定的 C++ 对象(由 Boost.Python 包装)是否仍然存在?

4

1 回答 1

1

您如何持有对包装类的“C++ 强引用”?

我对 boost python 很生疏,但我相信 boost::shared_ptr 的删除器存在确保了生命周期管理。

如果这不是问题,您可能需要将 C++ 中的实例保存在 boost::python::object 中。

于 2012-12-21T11:42:58.117 回答