Cześć, pisze projekt z programowania i jednym z jego założeń jest aby obiekty jednej z klas były dodawane dynamicznie i można było zmieniać ich liczbę w czasie trwania programu. Moim tematem jest zarządzanie firmą budowlaną, w projekcie posiadam klasę pracownik i dynamicznie dodaje obiekty właśnie tej klasy. Jednak klasą główną jest firma i to w niej znajduje się metoda dodaj_pracownika. Mam jednak problem, ponieważ,gdy wywołuję metodę dodaj pracownika normalnie w kodzie to działa poprawnie, ale gdy chce w switchu dodać opcję "dodaj pracownika" to nie wiedzieć czemu program przestaje działać po wybraniu tej własnie opcji. Poniżej kod, jeśli napisałem niejasno z góry przepraszam. Jeżeli potrzebne będą większe fragmenty kodu proszę o informację. Dodałem tresc bledu w metodzie dodaj_pracownika.
void Firma::dodaj_pracownika()//metoda dodawania pracownika
{
int temp = pracownik->zwroc_ile();
Pracownik* starzy_pracownicy = pracownik;
pracownik = new Pracownik[temp+1];
for (int i = 0; i < temp; i++)
{
pracownik[i] = starzy_pracownicy[i];
/*W tym miejscu podczas proby uzycia w switchu czasem wywala aplikacje i wyswietla sie "Zgloszono nieobslugiwalny wyjatek:naruszenie dostepu do odczytu. _that bylo nullptr.*/
}
delete []starzy_pracownicy;
}
Firma::Firma(const Firma&firma) //konstruktor kopiujacy, mam w kodzie jeszcze dwa inne(zalozenia projektu)
{
licz_pracownikow = firma.licz_pracownikow;
nazwa = firma.nazwa;
cena_m = firma.cena_m;
pracownik = new Pracownik[licz_pracownikow];
for (int i = 0; i < licz_pracownikow; i++)
{
pracownik[i] = firma.pracownik[i];
}
klient = firma.klient;
materialy = firma.materialy;
opinia = firma.opinia;
}
test1.dodaj_pracownika(); // w taki sposob jak napisze w dowolnym miejscu w kodzie to dodaje poprawnie
//switch tu nie dziala
int a;
do
{
menu();
cin >> a;
switch (a)
{
case 1:
test1.dodaj_pracownika();
break;
case 2:
m1.wyswietl_materialy();
break;
case 3:
p1.wyswietl_info();
break;
case 4:
test1.wyswietl_nazwe();
test1.wyswietl_opinie();
break;
case 5:
m1.wyswietl_koszt();
break;
case 6:
m1.wyswietl_materialy();
break;
case 7:
cout << "Calkowity koszt wykonania budowy wynosi: " << k1.zwroc_metraz()*test1.zwroc_cena_m();
break;
case 8:
float calk;
calk = k1.zwroc_metraz()*test1.zwroc_cena_m();
if (k1.zwroc_cene() < calk)
cout << "Klienta stac, jest wniebowziety!" << endl;
else if (k1.zwroc_cene() == calk)
cout << "Idealna cena dla klienta!" << endl;
else
cout << "Klient bedzie musial siegnac glebiej do kieszeni!" << endl;
break;
case 9:
test1.ile_pracownikow();
break;
default:
cout << "Nie rozpoznana opcja!" << endl;
break;
}
} while (a != 10);