Dziedziczenie wielobazowe

Dziedziczenie wielobazowe
I2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 229
0

Witam
Mam problem przy wielobazowym dziedziczeniu. Moim zadaniem jest zbudowaniem prostego programu pokazującego dziedziczenie i stworzyłem schemat ( w załączniku ) .
Jednym z poleceń jest : "na rzecz każdego z tych obiektów zrealizować zwykłe wywołania (z użyciem operatora kropka) metod z klasy podstawowej i klas pochodnych"
i problem się pojawia gdy chce wywołać metode :

Kopiuj
 amfibia.ktos_ty();

błąd : Amfibia::ktos_ty is ambiguous
Domyślam się że problem jest w tym że amfibia dziedziczy tą metodę od samochodu i od łodzi.
ale jak rozwiązać ten problem ? zmieniałem już specyfikator dostępu ale nic nie dało.

Kopiuj
 class Pojazd{
public:
	void ktos_ty(); 
	void wydaj_dzwiek(){
		cout << "Dzwiek Pojazdu" << endl;
	}

};

class Samochod : public Pojazd{
public:
	void wydaj_dzwiek(){
		cout << "Dzwiek Samochodu" << endl;
	}
	void jedz();
};

class Lodz : Pojazd{
public:
	void wydaj_dzwiek(){
		cout << "Dzwiek Lodzi" << endl;
	}

	void plyn(); 
};

class Amfibia :public Lodz, public Samochod{
public:
	void wydaj_dzwiek(){
		cout << "Dzwiek Amfibii" << endl;
	}
};
MI
  • Rejestracja: dni
  • Ostatnio: dni
1

użyj dziedziczenia virtual

ER
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 168
1

virtualne dziedziczenie
a jak chcesz tak wywolac to amfibia.wydaj_dzwiek();

I2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 229
0

faktycznie dziedziczenie wirtualne rozwiazało problem. Dzięki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.