提取基类指针

时间:2011-04-10 09:49:39

标签: c++ python object boost extract

有人告诉我,我可以从任何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类的指针?

1 个答案:

答案 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!

就是这样(: