Witam, mam taki problem. W moim programie chcę zrobić klasę listę obiektów mojej klasy bazowej i jej klas pochodnych.
Mam KlasęBazową, KlasęPochodną1, KlasęPochodną2 i KlasęPochodnąPochodnej2.
Chciałbym stworzyć mniej więcej taką klasę:
class ListaObiektow
{
protected:
list <KlasaBazowa*> lista;
public:
void Pokaz();
void Dodaj();
void Usun();
void Sortuj();
void Edytuj();
ListaObiektow();
~ListaObiektow();
};
Konstruktor z dodawaniem obiektów wygląda tak:
{
int x= 0;
bool dodawanie = 0;
do
{
std::cout << "dodaj : " << endl;
std::cin >> x;
switch (x)
{
case 1:
{
KlasaPochodna1 *obiekt = new KlasaPochodna1;
lista.push_back(obiekt);
}break;
case 2:
{
KlasaPochodna2 *obiekt = new KlasaPochodna2;
lista.push_back(obiekt);
}break;
case 3:
{
KlasaPochodnaPochodnej2 *obiekt = new KlasaPochodnaPochodnej2;
lista.push_back(obiekt);
}break;
default:
break;
}
std::cout << "czy chcesz dodać kolejny?(1-tak,0-nie)" << endl;
std::cin >> dodawanie;
} while (dodawanie == true);
system("CLS");
}
Lecz funkcja która pokazuje mi obiekty z listy pokazuje je tylko jak by były typu KlasaBazowa.
Pokaz()
{
for (auto it : lista)
{
cout << *it << "\n"; // operator cout(<<) został przeciążony dla każdej z klas
}
system("PAUSE");
}
Nie wiem za bardzo jak to zrobić.