如果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