纯虚函数调用

发布于 2024-11-02 09:20:31 字数 468 浏览 1 评论 0原文

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

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

什么问题?

I'm using boost.python to make python-modules written in c++. I have some base class with pure virtual functions which I have exported like this:

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

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

in Python I have code:

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

Test obj
obj.GetPosition()

RuntimeError: Pure virtual function called

What's wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦妄 2024-11-09 09:20:31

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

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

This error happens when a constructor or a destructor directly or indirectly calls a pure virtual member.

(Remember that during constructor and destructor execution, the dynamic type is the constructed/destructed type and so virtual members are resolved for that type).

陌上青苔 2024-11-09 09:20:31

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

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

A "pure virtual function" is a function that has no definition in the base class. It means that all children of that base class will have an overridden implementation of that function, but the base class does not have an implementation.

In your example, it looks like you are calling a pure virtual function, so you are calling a function that is declared, but since you are not calling any child's implementation, it has no definition.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文