Jeżeli mam 3 klasy: kl1, kl2, kl3 , gdzie każda dziedziczy z poprzedniej i chcę skorzystać ze zmiennej X znajdującej się w klasie kl1, to muszę napisać
NazwaObiektu.kl2::kl1::X
Czy istnieją szybsze, wygodniejsze sposoby? Jak się tego używa w praktyce, za pomocą wskaźników?
@lionbest: Dzięki Mirku. Jeszcze jedno pytanie: Gdy mam konstruktor kl1() to jest on też wykorzystywany w kl3 Jednak przy konstruktorze z argumentami kl1( int N ) ten mechanizm nie działa. Da się to prosto obejść czy trzeba tworzyć konstruktory bazujące na poprzednich konstruktorach?
@Erk700: tworząc obiekt klasy kl3, musisz zainicjalizować jego klasę bazową, jeśli tego nie zrobisz to wykona się to nie jawnie z wykorzystaniem konstruktora domyślnego klasy bazowej (o ile taki istnieje). jeśli konstruktory kl3 nie powinny robić nic poza inicjalizacją klasy bazowej możesz napisać wewnątrz kl3: using kl2::kl2 spowoduje to "odziedziczenie" konstruktorów klasy bazowej.
W teorii dziedziczenie wydaje się fajne, ale w praktyce jest przydługawe.
Jeżeli mam 3 klasy: kl1, kl2, kl3 , gdzie każda dziedziczy z poprzedniej i chcę skorzystać ze zmiennej X znajdującej się w klasie kl1, to muszę napisać
NazwaObiektu.kl2::kl1::X
Czy istnieją szybsze, wygodniejsze sposoby? Jak się tego używa w praktyce, za pomocą wskaźników?
x
to wystarczyNazwaObiektu.x
.Gdy mam konstruktor kl1() to jest on też wykorzystywany w kl3
Jednak przy konstruktorze z argumentami kl1( int N ) ten mechanizm nie działa.
Da się to prosto obejść czy trzeba tworzyć konstruktory bazujące na poprzednich konstruktorach?
jeśli konstruktory kl3 nie powinny robić nic poza inicjalizacją klasy bazowej możesz napisać wewnątrz kl3:
using kl2::kl2
spowoduje to "odziedziczenie" konstruktorów klasy bazowej.
http://pastebin.com/9Ngn0fGW