Please have a look at the code:
#include <iostream>
using namespace std;
class base1
{
public:
int x,y;
};
class base2
{
public:
int x, z;
};
class derived: virtual public base1,virtual public base2
{
public:
void display(int a, int b, int c)
{
x=a;
y=b;
z=c;
cout<<x<<endl<<y<<endl<<z<,endl;
}
};
int main()
{
derived dr;
dr.display(1,2,3);
}
由於基類base1和base2是虛擬的,它應該解決這些類中x的聲明問題。但事實並非如此。它給了我一個錯誤: 錯誤:引用'x'是不明確的 任何人都可以請把光?在C++中無法擺脫菱形問題
A)你有沒有金剛鑽。 B)編譯器應該怎麼知道你想要哪個'x'?你知道你想修改哪個'x'嗎? – NathanOliver
虛擬繼承不會「合併」成員,它會「合併」基類子對象。 – aschepler
是的,這不是鑽石問題。同意。我想修改基類1的x。 – coder999