vector - problem z typami

0

Jest sobie klasa KlasaNadrzedna i klasa KlasaPodrzedna która dziedziczny tą pierwszą klasę.
oraz wektory:

vector <KlasaPodrzedna> kp;
vector <KlasaNadrzedna *> kn;

następnie robie tak:

kp.push_back(KlasaPodrzedna(wartosc));
kn.push_back(&kp[0]);
cout << kn[0]->wartosc;

i do tej pory działa wszystko ok, ale jeśli zamiast powyższego napisze tak:

kp.push_back(KlasaPodrzedna(wartosc));
kn.push_back(&kp[0]);
kp.push_back(KlasaPodrzedna(wartosc2));
cout << kn[0]->wartosc;

to wtedy wawala już błąd, podejrzewam że chodzi o to że jeśli utworzy się jeszcze jeden element w kontenerze kp to przy wyświetlaniu kn istenieje jakiś konflikt co do rozmiaru typów. Ale dokładnie nie wiem o co może chodzić, czy ktoś mi pomoże jak rozwiązać problem?

0

Czy ty chłopie nauczysz się czytać dokumentację? Otóż wyjaśnię ci w czym problem. Vector to tablica która MA MOŻLIWOŚĆ ROZSZERZANIA SIĘ. Co z tego wynika? Ano to że czasem zachodzi potrzeba przeniesienia tego wektora w inne miejsce w pamięci, bo w danym miejscu tej pamięci brakło. Wynika z tego ze zapisywanie gdziekolwiek adresów elementów które są w wektorze to TERRORYZM. Jeśli potrzebujesz korzystać z polimorfizmu to naucz sie używać new i delete.

1 użytkowników online, w tym zalogowanych: 0, gości: 1