提取基类指针

Posted

技术标签:

【中文标题】提取基类指针【英文标题】:Extract base class pointer 【发布时间】:2011-04-10 09:49:38 【问题描述】:

有人告诉我,我可以从任何 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++ 右值 boost::shared_ptr 从此 Der 类型的 Python 对象

是否可以提取Base 类的指针?

【问题讨论】:

【参考方案1】:

所以,使用this thread 我已经解决了我的问题。首先,我的Base类是这样导出到python中的:

bp::class_<Base, boost::noncopyable>("Base", bp::no_init)

我不得不删除bp::no_init。为什么?看下一次更新(我之前在***帖子中给出的答案):

class Der(Base):
    def __init__(self):
        super(Der, self).__init__() # Add this!

就是这样(:

【讨论】:

以上是关于提取基类指针的主要内容,如果未能解决你的问题,请参考以下文章

基类指针和派生类指针

基类指针和派生类指针

将基类指针强制转换为子类指针后的疑惑

基类指针指向派生类对象&派生类指针指向基类对象

无法将参数 1 从派生指针转换为基类指针引用

虚函数和基类中的this指针的问题!