0
我想創建一個使用boost python的對象。類定義(僞):boost python靜態創建方法
class Awrap : public A, public boost::python::wrapper<A> {
static std::shared_ptr<A > Create(...) { ... } // inherited from A
virtual double foo(...) override { // overrides pure virtual function in A
return this->get_override("foo")(...);
}
};
BOOST_PYTHON_MODULE() {
using namespace boost::python
class_<Awrap,std::shared_ptr<Awrap>, boost::noncopyable>("A",boost::python::no_init)
.def("Create",&A::Create).staticmethod("Create")
.def("foo",pure_virtual(&Awrap::foo));
boost::python::register_ptr_to_python<std::shared_ptr<A> >();
}
的問題是,當我在Python中實現兒童和調用靜態創建方法,它會創建一個指向Awrap(沒有孩子)。所以它找不到python實現的「foo」版本。如果我在Awrap類中實現foo而不是python子類,它可以正常工作,但我不想這樣做!
有什麼建議嗎?
謝謝!
我這樣做,通過添加 升壓::蟒:: register_ptr_to_python <性病:: shared_ptr的(); –