Roh*_*are 1 c++ overriding virtual-functions multiple-inheritance virtual-inheritance
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
{
};
Run Code Online (Sandbox Code Playgroud)
我将一个纯虚函数放入基类中。我在创建从基类继承的派生类和派生类 1 时使用 virtual 关键字,最后创建了从派生类和派生类 1 继承的派生类 2,然后我会收到错误“派生类:base::void(display) 的继承不明确” “如何解决这个错误?
您需要确定这两个方法中哪一个是派生方法,因为衍生方法和派生方法都提供了实现。
使用非虚函数,解决方案会更直接:只需编写using derived::display或using derived1::display
但是您使用的是虚函数,因此您需要添加一个最终的重写函数。可以这样做:
class derived2 : public derived, derived1 {
public:
void display() override {
derived::display(); // or derived1::display();
}
}
Run Code Online (Sandbox Code Playgroud)