tworzysz klase podstawowa (wspolna dla powyzszych, ktore wymieniles - wspolna moze byc np metoda, jakas zmienna)
tworzysz klasy pochodne po klasie podstawowej, dodajac juz indywidualne zmienne, metody dla odpowiednich klas,
tworzysz kontener obiektow (lub wskaznikow) klasy podstawowej
class A
{
virtual void funkcja();
};
class B
: public A
{
void funkcja();
int a;
};
class C
: public A
{
void funkcja();
float a;
string nazwa;
}
vector < A *> vA;
cos mniej wiecej takiego, oczywiscie to w duzym uproszeniu (nie wiem, czy nie ustrzeglem sie jakiegos bledu - traktuj jako pseudo-kod.
Oczywiscie nalezaloby dopisac kontruktory, destruktory, przemyslec konstrukcje klasy podstawowej - ale to wyjdzie w trakcje tworzenia - a z czasem, jak nabierzesz doswiadczenia, to juz wiekszosc na etapie projektowania dasz rade przewidziec (ale pewnie nie wszystko)
virtual - prostymi slowami - umozliwia nadanie tej samej funkcji roznych zachowan, w zaleznosci od przynaleznosci do odpowiedniej klasy
=0;
uczyni klase czysto wirtualna - co oznacza, ze niemozliwym stanie sie utworzenie obiektu klasy A, musisz podac definicje tej funkcji w klasie dziedziczacej.
Poczytaj o dziedziczeniu, z pewnoscia nie jest to temat prosty na kilkanascie minut, niezrozumienie go niesie ze soba liczne pulapki, ale jesli pomalu bedziesz go opanowywal - pomaga rozwiazac/ulatwic wiele problemow - jak na przyklad twoj.
Takze powodzenia (dziedziczenie, polimorfizm inne pokrewne tematy)