Wpis z mikrobloga

#naukacplusplus #cplusplus #codeblocks
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?
  • 4
@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.