나는 다이아몬드 문제를 겪고 있었고 다양한 시나리오에서 효과가있을 것이라고 생각했다. 그리고 이것은 내가 작업하고있는 것들 중 하나입니다.다이아몬드 문제
#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 클래스 메인베이스 변수에 액세스합니까? 모든 입력.
이 코드를하시기 바랍니다 수정합니다. 모두 선택하고 010101을 누르십시오. – jkeys
실제로, 보는 것은 악몽입니다. : –
다이아몬드 문제 : "다중 상속 및 지식 조직이있는 객체 지향 프로그래밍 언어에서 다이아몬드 문제는 두 클래스 B와 C가 A에서 상속 받고 클래스 D가 B와 C에서 상속 될 때 발생하는 모호성입니다. D의 메소드는 A에 정의 된 메소드를 호출하고 (메소드를 대체하지는 않습니다.) B와 C는 메소드를 다르게 오버라이드 한 다음 클래스가 B 또는 C를 상속합니다. "source : http : // en .wikipedia.org/wiki/Diamond_problem – Adriaan