纯虚函数调用

时间:2011-04-16 17:30:36

标签: c++ python boost-python pure-virtual

我正在使用boost.python来制作用c ++编写的python模块。我有一些基类与纯虚函数,我已导出如下:

class Base
{
    virtual int getPosition() = 0;
};

boost::python::class_<Base>("Base")
   .def("GetPosition", boost::python::pure_virtual(&Base::getPosition));
Python中的

我有代码:

class Test(Base):
   def GetPosition(self):
      return 404

Test obj
obj.GetPosition()
  

RuntimeError:名为

的纯虚函数

怎么了?

2 个答案:

答案 0 :(得分:4)

当构造函数或析构函数直接或间接调用纯虚拟成员时,会发生此错误。

(请记住,在构造函数和析构函数执行期间,动态类型是构造/销毁类型,因此针对该类型解析虚拟成员。)

答案 1 :(得分:1)

“纯虚函数”是一个在基类中没有定义的函数。这意味着该基类的所有子类都将具有该函数的重写实现,但基类没有实现。

在您的示例中,看起来您正在调用一个纯虚函数,因此您正在调用一个声明的函数,但由于您没有调用任何子函数的实现,因此它没有定义。