提取基类指针
有人告诉我,我可以从任何 boost::python::object
中提取基类的引用。
简单的代码看起来是这样的:
// c++:
class Base {};
// Export Base into python module
// python:
class Der(Base):
pass
//c++:
boost::python::object obj; // It points to some Der class object made from python
boost::shared_ptr<Object> temp = extract< boost::shared_ptr<Object> >(obj);
但是最后一行出错了,错误信息是:
类型错误:没有注册的转换器能够从这个类型为 Der 的 Python 对象生成 C++ 的 rvalue 类型 boost::shared_ptr。
我能否提取出 Base
类的指针呢?
1 个回答
2
所以,通过这个帖子我解决了我的问题。首先,我的Base
类是这样导出到Python中的:
bp::class_<Base, boost::noncopyable>("Base", bp::no_init)
我不得不去掉bp::no_init
。为什么呢?看看接下来的更新(我之前提到的stackoverflow帖子里的答案):
class Der(Base):
def __init__(self):
super(Der, self).__init__() # Add this!
就这样(: