我正想通過鑽石的問題與思考各種方案會奏效。這是我正在研究的其中之一。鑽石問題
#include <iostream>
using namespace std;
class MainBase{
public:
int mainbase;
MainBase(int i):mainbase(i){}
void geta()
{
cout<<"mainbase"<<mainbase<<endl;
}
};
class Derived1: public MainBase{
public:
int derived1;
int mainbase;
Derived1(int i):MainBase(i),derived1(i) {mainbase = 1;}
public:
void getderived1()
{
cout<<"derived1"<<derived1<<endl;
}
};
class Derived2: public MainBase{
public:
int derived2;
int mainbase;
Derived2(int i):MainBase(i),derived2(i){mainbase = 2;}
public:
void getderived2()
{
cout<<"derived2"<<derived2<<endl;
}
};
class Diamond: public Derived1, public Derived2{
public:
int diamond;
int mainbase;
Diamond(int i,int j, int x):Derived1(j),Derived2(x),diamond(i){mainbase=3;}
public:
void getdiamond()
{
cout<<"diamond"<<diamond<<endl;
}
};
int main()
{
Diamond d(4,5,6);
// cout<< d.MainBase::mainbase;
cout<<"tested"<<endl;
cout<<d.mainbase;
cout<<d.Derived2::mainbase<<endl;
cout<<d.Derived1::mainbase<<endl;
/*cout<<d.Derived2::MainBase::mainbase<<endl;
cout<<d.Derived1::MainBase::mainbase<<endl;*/
}
我現在想知道如何訪問MainBase類的mainbase變量?任何輸入。
修復代碼,請。全部選中並點擊010101. – jkeys 2009-08-12 05:12:09
確實,這是一場噩夢。 :( – 2009-08-12 05:13:20
鑽石問題:「在與多重繼承和知識組織的面向對象編程語言中,該鑽石的問題是,當出現兩個類B和C從A繼承歧義,和類d從B和C,如果繼承D中的一個方法調用A中定義的方法(並且不覆蓋該方法),並且B和C以不同方式重寫該方法,那麼它從哪個類繼承:B或C?「source:http:// en .wikipedia.org/wiki/Diamond_problem – Adriaan 2009-08-12 07:36:05