mambutu napisał(a)
class B:A{} // <----
list< B> mylist; //<---- list od BE
A objekt;
mylist.push_back(A); // <--- push AA
I stad moje pytanie skoro obiekt B dziedziczy po A to jest tez obiektem A 'po czesci' i stad moje pytanie czy mozna wykonac jakis myk by dodawac obiekty bazowe do listy ktora ma zadeklarowane przechowywac jakis obiekt dziedziczacy??
pre'scriptum: przedmowcom radze czytac uwazniej:)
Da sie, ale sadze ze jestes poczatkujacy, i tego nie pokaze, gdyz jest zbyt niebezpieczne w uzyciu i Twoj(e) program(y) beda niestabilne.
Sens dziedziczenia posrod elementow list jest taki, aby operowac na szczegolowych, roznych, konkretnych implementacjach klas dziedziczacych D:A, C:A, B:A, widzac je pod postacia ich 'wspolnego mianownika', czyli jako wystapienia klasy A. stad, tworzac liste wskaznikow na obiekty A, mozesz do tej listy smialo powstawiac takze wskazniki na obiekty typu B, C, D i wszysto bedzie dzialac poprawnie.
wyobraz sobie teraz odwrotna sytuacje, taka o jakiej piszesz: masz liste wskaznikow na obiekty D {czyli: samochody}, a chcesz do tej listy wstawic obiekt A {czyli: 'pojazd'}. jak potem bedziesz przegladac te liste, skoro jej typ to samochod - bedziesz widziec same samochody. na jakims elemencie odpalasz metode "uruchomSilnik" albo "otworzDrzwi" ---- jak one mialyby sie wykonac, jesli ow element okazalby sie byc owym 'pojazem'? klasy A, czyli pojazdu, te metody moga nieobowiazywac i w ogole moga nie istniec!
niemniej, jest to wykonalne. w ogole, nie wiele jest rzeczy, ktorych nie da sie zrobic jak czlowiek sie uprze. pytanie tylko: jaki sens ryzykowac ze strzelisz sobie w stope? przekonstruuj problem tak, abys nie musial tam tego wstawiac, albo zebys mial liste z typem bardizej ogolnym