以下是我的C++ class
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")
;
}
但它给了我奇怪的编译器模板错误。
错误是
destructor could not be generated because a base class destructor is inaccessible
答案 0 :(得分:1)
尝试将您的课程公开为no_init
:
class_<Foo, boost::noncopyable>("Foo", no_init);
答案 1 :(得分:0)
destructor could not be generated because a base class destructor is inaccessible
你解决了吗?
如果没有,那意味着你在类的private
部分声明了构造函数,这就是无法访问它的原因。实际上你不能实例化那个类,它只能用作单例。
移动你的
ChildFactory();
~ChildFactory();
到公共区域并告诉我们。
答案 2 :(得分:0)
manage_new_object
可能会使用auto_ptr<>
,需要delete pointer_to_ChildFactory
才能使用~ChildFactory()
。