Witam.
Ostatnimi czasy czerpię wiedzę z książki "C++ i QT - Wprowadzenie do wzorców projektowych". I tam zaprezentowano dziedziczenie publiczne QList<> :
class CardDeck : public QList<Card> {};
class Card {}; // prosta klasa karty do gry
Dzięki takiemu rozwiązaniu klasa CardDeck jest kontenerem QList<Card> i dziedziczy po nim wszystkie metody. CardDeck zawiera też swoje funkcje publiczne (konstruktor, tworzenie talii). Jednakże takie dziedziczenie jest dla mnie trochę dziwne i niezrozumiałe. Czy nie lepiej byłoby stworzyć zmienną składową QList<Card> zamiast używać dziedziczenia? Czy kod takiej funkcji nie byłby czytelniejszy i prostszy? Druga wada, jaką zauważam, to to, że kod kliencki może odwoływać się bezpośrednio do metod kontenera QList i zmieniać dowolnie wartości. Tak chyba być nie powinno.
Jakie są zalety takiego dziedziczenia? Czy może lepiej używać zmiennych?