有人告诉我,我可以从任何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);
最后一行失败了:
TypeError:没有注册的转换器 能够生成类型的C ++ rvalue boost :: shared_ptr来自于此 Der
类型的Python对象
是否可以提取Base
类的指针?
答案 0 :(得分:2)
所以,使用this thread我已经解决了我的问题。首先,我的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!
就是这样(: