134

134



void TestWielodziedziczeniaO

{

C4 c4;

c4.C2::Metoda1 (); c4.C3::Metoda2(); c4.C3::Metoda3();

}

W wypadku wielodziedziczenia, gdy kilka klas podstawowych ma składowe o tych samych nazwach, lub kilka klas podstawowych ma wspólną klasę macierzystą wówczas może wystąpić problem niejednoznaczności nazw metod. Co na przykład oznacza c4::Metodal() w pierwszym fragmencie kodu? Mogłaby to być metoda Metodał, którą klasa C4 dziedziczy po klasie C3, a klasa C3 — po klasie Cl. Ale równie dobrze mogłaby to być metoda Metodal dziedziczona przez klasę C4 po klasie C2, która z kolei dziedziczy ją po klasie Cl?

Nawet jeśli dziedziczenie z jednej tych z klas jest prywatne i ostatecznie metoda nie jest dostępna, to nazwa metody nadal będzie wieloznaczna.

Aby rozwiązać ten problem, trzeba określić jawnie, z której klasy pochodzi metoda, którą wywołujemy, tak jak pokazano we fragmencie „Po”.

Przykład: TestMultlnheritO w pliku inherit.cpp


Wyszukiwarka

Podobne podstrony:
vag interface R1-10k R2 - 2,2 k R3- 10 k RA- A, 5 k C2- 1uF/50V C3- 1uF/50 V&nbs
przedwzmacniacz 2x130w schemat GND *1 ii Rl, R5 - lOOk R2, R4- lOk R3 - 15k C1,C2 - 4,7uF/
133 TIF class C3 : public C1{ public: void Metoda3();}; class C4 : public C3, public C2{}; void
class C3 : public C1{ public: void Metoda3();}; class C4 : public C3, public C2{}; void
133 TIF class C3 : public C1{ public: void Metoda3();}; class C4 : public C3, public C2{}; void

Analiza czynników ryzyka zjawisk C1,C2,C3,C4 Wl, Ul, KI naturalnych w kontekście W2, U 2,
Metoda ekspercko-matematycznajako narzędzie... 349 C4 - Rozwój nowoczesnych rozwiązań stosowanych
W2 W3 W4 W5 W6 W7 Cl C2 C3 C4 C5 Wl- System normalizacyjny w Polsce -    W1 -

więcej podobnych podstron