提取基类指针
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!
就是这样(:
【讨论】:
以上是关于提取基类指针的主要内容,如果未能解决你的问题,请参考以下文章