Dziedziczenie wielobazowe

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 :

 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.

 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;
	}
};
1

użyj dziedziczenia virtual

1

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

0

faktycznie dziedziczenie wirtualne rozwiazało problem. Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1