[c++] Dziedziczenie wirtualne a odwoływanie się do danych składowych.
Ostatnio zmodyfikowano 2016-05-15 02:06
Valhalla Temat założony przez niniejszego użytkownika |
[c++] Dziedziczenie wirtualne a odwoływanie się do danych składowych. » 2016-05-14 20:52:52 Witam serdecznie. Zastanawiam się nad jedną rzeczą, mamy klasę Q w której jest dana składowa 'x'. class Q { public: int x; }; A także dwie klasy, które dziedziczą klasę Q w sposób wirtualny: class A : virtual public Q { }; class B : virtual public Q { }; Klasa C dziedziczy klasy A i B oraz klasę Q w sposób zwykły: class C : public A , public B , public Q { public: void f() { cout << A::x; } }; Moje pytanie jest takie: jak odwołać się do tej danej składowej x klasy bezpośrednio podstawowej dla klasy C. Zapis C::Q::x jest uznawany za wieloznaczność. Jedyne co odkryłem to to że jeśli mamy dodatkową klasę np: i klasa C zamiast klasy Q dziedziczy w sposób normalny klasę WW to odwołanie się do WW::x jest możliwe, czy idzie i jaki ewentualnie zapis jest w poprzednim przypadku? Pozdrawiam |
|
pekfos |
» 2016-05-14 22:20:21 Klasa WW jest niezbędna dla rozwiązania wieloznaczności przy dostępie do Q. W GCC jest nawet na taki przypadek ostrzeżenie: warning: direct base 'Q' inaccessible in 'C' due to ambiguity
|
|
Valhalla Temat założony przez niniejszego użytkownika |
» 2016-05-15 02:06:37 OK, dzięki za odpowiedź :) Temat chyba można zamknąć. Dowiedziałem się wszystkiego co chciałem =) |
|
« 1 » |