我正在尝试使用python可见的工厂创建和删除对象 该对象具有私有构造函数和析构函数,工厂生命周期必须大于它创建的对象 似乎以下代码应该这样做:
class_<Factory>("Factory")
.def("CreateObject", &Factory::CreateObject,
return_internal_reference<1, return_value_policy<manage_new_object>>());
class_<Object, boost::noncopyable>("Object", no_init);
就我所知,它没有编译器或运行时错误
问题是助推器如何知道如何销毁物体?
我指定manage_new_object
所以它需要销毁它,但它不能调用析构函数,因为它是私有的,我没有提供它的工厂销毁方法的名称。
我怎么指定它?我可以向def
添加另一个Factory
,但这意味着python代码必须处理对象的破坏并且可以拥有悬空对象。
我想要做的是当这个对象的引用计数达到0时,将自动调用factory.DestroyObject(object)
或甚至我只提供对象的静态函数作为参数将被调用(工厂可以从对象中恢复)