Witam
Mam sobie trzy klasy, jedną główną i dwie podklasy:
class zwierze{
public
char* nazwa;
void glos()
{
cout << "Sz\n";
}
};
class kot: public zwierze{
public:
char* kolor;
void glos()
{
cout << "Miau\n";
}
};
class pies: public zwierze{
public:
char* rasa;
void glos()
{
cout << "Hau\n";
}
};
I teraz tworze tablice obiektów klasy zwierze
stado= new (nothrow) zwierze[liczba];
I chciałbym wypełnić tą tablice obiektami klasy kot i obiektami klasy pies tak, że jak wywołam po kolei metode glos() dla każdego obiektu z tablicy będzie ona interpretowana zależnie od klasy obiektu. Moje pytanie brzmi jak tego dokonać?
Zrobiłem coś takiego:
for(int i=0;i<liczba;i++){
int temp;
temp=rand()%1;
if(temp==0){
kot* zwierz = new kot();
zwierz->nazwa=losujImie(rand()%7);
stado[i]=*zwierz;
delete zwierz;
}
else
{
pies* zwierz = new pies();
zwierz->nazwa=losujImie(rand()%7);
stado[i]=*zwierz;
delete zwierz;
}
}
I niestety działa to tak, że po wywołaniu pętli:
for(int i=liczba-1;i>=0;i--){
stado[i].glos();
}
Dla każdego elementu tablicy wykonywana jest metoda z klasy zwierze.
Jak to rozwiązać?