为非虚方法指定的c ++初始化

Jim*_*imm 10 c++

我有啊如下图所示

class A
{
public:
    void doSomething()=0;
};
Run Code Online (Sandbox Code Playgroud)

然后我有bh如下所示

#include "a.h"

class b: public A
{
public:
    void doSomething();
};
Run Code Online (Sandbox Code Playgroud)

我只是试图通过尝试编译标题来检查语法错误 g++ -c a.h b.h

然后我低于错误

a.h:4: error: initializer specified for non-virtual method 'void A::doSomething()'

这个错误意味着什么?

Rei*_*ica 16

如果成员函数= 0是虚拟的,则只能将其声明为abstract().将virtual关键字添加到基类(在类中A)的函数声明中.

virtual在派生类成员函数的声明中重复也是一种好习惯,尽管在技术上不需要(因为规则是"曾经是虚拟的,总是虚拟的".)

  • 错误消息可能只是这么说的。通常情况下,错误消息是完全无法理解的,除非您已经知道它的含义。 (2认同)