2012-08-22 48 views
2

繼返回實例是我C++ class的boost :: python的靜態方法的類

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

destructor could not be generated because a base class destructor is inaccessible

那你有沒有解決呢?

如果不是,這意味着它是在類的private部分聲明的構造函數,這就是爲什麼它不能被訪問。實際上你不能實例化那個類,它只能用作單例。

移動你的

ChildFactory(); 
~ChildFactory(); 

市民節,讓我們知道。

1

嘗試暴露你的類具有no_init

class_<Foo, boost::noncopyable>("Foo", no_init); 
0

manage_new_object可能使用auto_ptr<>這需要delete pointer_to_ChildFactory工作這需要~ChildFactory()訪問。