class base
{
public:
virtual void display() = 0;
};
class derived : virtual public base
{
public:
void display()
{
cout << "Display of derived : " << std::endl;
}
};
class derived1 : virtual public base
{
public:
void display()
{
cout << "Display of derived : " << std::endl;
}
};
class derived2 : public derived, derived1
{
};
我将一个纯虚函数带入基类。我在创建派生类和派生类时使用了虚拟关键字,该类继承自我的基类,最后创建了派生类继承自派生和派生1,然后我将收到错误消息“ derived2:ambigos of base :: void(display) “如何解决此错误?
答案 0 :(得分:2)
您需要确定两者中的哪一个是派生的方法,因为derived和derived1都提供了实现。
使用非虚拟功能,解决方案将更简单:只需编写using derived::display
或using derived1::display
但是您正在使用虚函数,因此您需要添加一个最终的覆盖函数。 可以这样做:
class derived2 : public derived, derived1 {
public:
void display() override {
derived::display(); // or derived1::display();
}
}