Witam,
Mam do napisania program którego zadaniem jest tworzenie wydarzeń i wyswietlanie ich pełnej listy. Program ma działać na podstawie tablicy wskaznikow na obiekty klasy bazowej. Problem w tym, że utworzone obiekty giną po zakończeniu bloku kodu co skutkuje tym że tablica nie wyświetla wydarzen prawidłowo.
Klasa Wydarzenie jest klasa bazową z metoda wirtualna "wypisz", dziedziczą po niej pola daty oraz opis klasy pochodne Koncert oraz WystawaMalarska. Nie zabardzo wiem jak obejść "zanikanie" stworzonych obiektów. Do przechowywania wskaznikow wykorzystalem vector.
Niżej main kodu, same definicje klas jak i wykorzystane funkcje są proste więc nie uwzględniam ich w poście.
int main()
{
int ster = 0;
vector <Wydarzenie*> tablica_wydarzen;
bool koniec = 0;
do{
ster = 0;
cout<<"Wybierz opcje: "<<endl;
cout<<"1 - Dodaj wydarzenie"<<endl;
cout<<"2 - Wyswietl tablice wydarzen"<<endl;
cout<<"3 - Zakoncz dzialanie"<<endl;
cin>>ster;
switch (ster)
{
case 1:
{
system("cls");
char ster2;
cout<<"Jakie wydarzenie chcesz dodac?"<<endl<<endl;
cout<<"w - Nowe wydarzenie"<<"\nk - Nowy koncert"<<"\nm - Nowa wystawa malarska"<<"\np - Powrot"<<endl;
cin>>ster2;
switch (ster2)
{
case 'w':
{
Wydarzenie W;
nowe_wydarzenie(&W);
tablica_wydarzen.push_back(&W);
break;
}
case 'k':
{
Koncert K;
nowy_koncert(&K);
tablica_wydarzen.push_back(&K);
break;
}
case 'm':
{
WystawaMalarska WM;
nowa_wystawa(&WM);
tablica_wydarzen.push_back(&WM);
break;
}
default:
break;
}
koniec = 0;
break;
}
case 2:
system("cls");
for(int i=0; i<tablica_wydarzen.size();i++)
tablica_wydarzen[i]->wypisz();
koniec = 0;
break;
case 3:
system("cls");
koniec = 1;
break;
}
}while (koniec == 0);
return 0;
}