纯虚函数调用

6 投票
2 回答
2704 浏览
提问于 2025-04-16 15:53

我正在使用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()

运行时错误:调用了纯虚函数

这是什么问题呢?

2 个回答

1

“纯虚函数”是指在基类中没有具体实现的函数。这意味着所有继承这个基类的子类都必须提供这个函数的具体实现,但基类本身并没有实现这个函数。

在你的例子中,看起来你在调用一个纯虚函数,也就是说你在调用一个已经声明但没有具体实现的函数,因为你没有调用任何子类的实现,所以这个函数没有定义。

4

这个错误发生在一个构造函数或析构函数直接或间接地调用了一个纯虚成员的时候。

(记住,在构造函数和析构函数执行的时候,动态类型就是正在构造或析构的类型,因此虚成员是根据这个类型来处理的)。

撰写回答