C++ 返回类实例的python静态方法
下面是我的C++ 返回类实例的python静态方法,c++,boost-python,C++,Boost Python,下面是我的C++类 namespace X { class ChildFactory: public Father { public: static ChildFactor* createChildFactory(const properties* ptr = NULLPTR); private : // no instances allowed ChildFactory(); ChildFactory(const properties* ptr);
C++类
namespace X {
class ChildFactory: public Father {
public:
static ChildFactor* createChildFactory(const properties* ptr = NULLPTR);
private :
// no instances allowed
ChildFactory();
ChildFactory(const properties* ptr);
~ChildFactory();
};
};
下面是我如何定义Boost::Python
结构的
BOOST_PYTHON_MODULE(TestPy)
{
boost::python::class_<X::ChildFactory, boost::noncopyable>("ChildFactory")
.def("createChildFactory", &X::ChildFactory::createChildFactory, boost::python::return_value_policy<boost::python::manage_new_object>() )
.staticmethod("createChildFactory")
;
}
无法生成析构函数,因为基类析构函数不可访问 你解决了吗 如果不是,这意味着你在类的
private
部分声明了构造函数,这就是为什么不能访问它。事实上,您不能实例化该类,它只能用作单例
移动你的
ChildFactory();
~ChildFactory();
向公共部分公开,并让我们知道。尝试将您的类公开为具有
no_init
:
class_<Foo, boost::noncopyable>("Foo", no_init);
class_uuo(“Foo”,没有初始化);
管理新对象
可能会使用自动ptr
,这需要删除指向子工厂的指针
,才能进行需要访问~ChildFactory()
的工作
class_<Foo, boost::noncopyable>("Foo", no_init);