Hai scritto:Infatti a me non interessa come si chiami l' attributo privato, bensì il getter che ha un nome non sempre adatto nelle sottoclassi.
Hai citato _string_list che è un dato membro. E questo io ho commentato.Il fatto è che _string_list in derived dovrebbe chiamarsi in un' altra maniera per lo scopo, ma di fatto utilizza il nome dei metodi della classe base.
Ho capito che intendi, ma l'esempio è infelice. (Hai definito un costruttore che restituisce qualcosa, il che è vietato.)Ecco un esempio forse più chiaro:
Nulla vieta di scrivere (ho modificato un po' per chiarezza):
get_banned_list(), però, non fa parte dell'interfaccia di list pertanto non si può usare con puntatori/reference di tipo list. In pratica non serve.codice:struct list { virtual std::list<std::string> get_list() const { return _list; } private: std::list<std::string> _list; }; struct banned_list : public list { std::list<std::string> get_banned_list() const { return _list; } };
Qui trovi un manuale con consigli e indicazioni utili per una buona codifica (applicabili in generale, non al caso in questione).
http://www.eptacom.net/pubblicazioni/cpp_stile/all.html