如果C++中存在钻石问题,如果Base和中等级别的类已经实现了虚函数。如何删除给定的错误?实现虚函数的钻石问题
#include <iostream>
using namespace std;
class Base
{
public:
virtual void display()
{
cout<<"In Base"<<endl;
}
};
class Der1:virtual public Base
{
public:
void display()
{
cout<<"In Der1"<<endl;
}
};
class Der2:virtual public Base
{
public:
void display()
{
cout<<"In Der2"<<endl;
}
};
class Mix: public Der1, public Der2
{
};
int main()
{
cout << "Hello World!" << endl;
Mix m_mix;
m_mix.display();
return 0;
}
我得到以下错误: -
main.cpp中:50:错误:请求为成员 '显示' 不明确 m_mix.display();
如何使用Mix类的对象访问Der1和Der2的display()?
*什么*“虚拟”功能? – WhozCraig 2014-11-03 12:34:36
'Mix'从两个不同的类继承'display'。没有办法确定应该调用哪一个。添加'使用Der1 :: display;','使用Der2 :: display;',或者覆盖'Mix'中的'display'功能。 – 2014-11-03 12:38:06
我不确定编辑display()虚拟是否有效。编译错误清楚地表明它不是。 – Barry 2014-11-03 12:42:59