【发布时间】:2019-04-19 13:57:36
【问题描述】:
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类时使用虚拟关键字,最后我创建了从派生和派生1继承的派生2类,然后我会得到错误“派生2:基类的模糊继承::无效(显示) "如何解决这个错误?
【问题讨论】:
-
提供 void derived2::display(void)
-
如果你不告诉编译器如何决定在两者之间使用哪个
display? -
好吧,你已经解决了钻石问题。您现在所拥有的只是一个多重继承问题。
-
一头猪说“oink, oink”。狗会说“汪,汪”。根据这些信息,你能分辨出猪狗在说什么吗?
-
Nitpick:要么你有
using namespace std;并且你没有在任何地方使用std::资格,要么你在任何地方都使用它!
标签: c++ overriding multiple-inheritance virtual-functions virtual-inheritance