Memory management 带有自定义删除器的Boost::Python对象

Memory management 带有自定义删除器的Boost::Python对象,memory-management,boost,boost-python,Memory Management,Boost,Boost Python,我试图使使用工厂创建和删除的对象对python可见。 对象具有私有构造函数和析构函数,工厂生存期必须大于它创建的对象。 下面的代码似乎可以做到这一点: class_<Factory>("Factory") .def("CreateObject", &Factory::CreateObject, return_internal_reference<1, return_value_policy<manage_new_object>>

我试图使使用工厂创建和删除的对象对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);
类(“工厂”)
.def(“CreateObject”,&Factory::CreateObject,
返回_内部_引用());
类(“对象”,无初始化);
而且据我所知,它没有编译器或运行时错误。
问题是boost如何知道如何销毁对象?
我指定了
manage\u new\u object
,因此它需要销毁它,但它无法调用析构函数,因为它是私有的,并且我没有向它提供工厂销毁方法的名称。
我如何指定它?我可以将另一个
def
添加到
Factory
中,但这意味着python代码必须处理对象的销毁,并且可能会有悬空的对象。
我想做的是,当这个对象的引用计数达到0时,会自动调用
工厂。DestroyObject(object)
,甚至会调用我只提供对象作为参数的静态函数(可以从对象恢复工厂)