【发布时间】:2020-06-14 03:54:45
【问题描述】:
我有这个:
class Base {
public:
Base() {};
virtual ~Base() = default;
virtual void Draw() = 0;
};
class Derived_1 {
public:
Derived_1() {};
void Draw() { std::cout << "Draw()" << std::endl; };
};
class Derived_2 : public Base, public Derived_1 {
public:
Derived_2() {};
~Derived_2() {};
//void Draw() { Derived_1::Draw(); }; <<<<<===--- This works well
};
class Derived_3 : public Derived_2 {
public:
Derived_3() {};
~Derived_3() {};
};
int main()
{
Base* d = new Derived_3();
d->Draw();
return 0;
}
我收到类似“纯虚函数“Base::Draw”没有覆盖器”的错误。我认为问题在于 Derived_2 有两个 Draw() 函数,其中一个是虚拟的。但是,如果不在 Derived_2 类中添加包装函数 Draw(),我不知道如何解决这个问题。有可能吗?
【问题讨论】:
-
您是否尝试过使用
override说明符? -
对不起,我不明白在哪里使用它
-
在
Derived_2,紧跟在void Draw()之后
标签: c++ c++17 base-class