Witam,
mam za zadanie stworzyć funkcję wirtualną która po wywołaniu wypisze odpowiedni komunikat dla poszczególnych klas, w tym przypadku Kwadrat i Okrąg.
Program kompiluje się, nie pokazuje błędów, ale problem polega na tym że gdy go uruchomię przestaje działać.
#include<iostream>
using namespace std;
class Figura{
public:
virtual void Rysuj() = 0;
~Figura(){
cout << "Destruktor Figura." << endl;
}
};
class Kwadrat : public Figura{
public:
virtual void Rysuj(){
// Figura :: Rysuj();
cout << "Rysuje kwadrat." << endl;
}
~Kwadrat(){
cout << "Destruktor Kwadrat." << endl;
}
};
class Okrag : public Figura{
public:
virtual void Rysuj(){
// Figura :: Rysuj();
cout << "Rysuje okrag." << endl;
}
~Okrag(){
cout << "Destruktor Okrag." << endl;
}
};
class Figury{
public:
int i;
Figura *tab[];
void Dodaj_figure(Figura *f){
tab[i] = f;
i++;
}
void Rysuj_Q(){
while(i > 0){
tab[i-1] -> Rysuj();
i--;
}
}
~Figury(){
cout << "Destruktor Figury." << endl;
}
};
int main(){
Kwadrat kw1;
Okrag okr1;
Kwadrat kw2;
Figury fig;
fig.i = 0;
fig.Dodaj_figure(&kw1);
fig.Dodaj_figure(&okr1);
fig.Dodaj_figure(&kw2);
cout << fig.i << endl;
fig.Rysuj_Q();
return 0;
}
Gdy wrzuciłem wywołanie funkcji Rysuj_Q do komentarza zadziałał, więc to pewnie tu leży problem, proszę o pomoc.