Mam problem w usuwaniu , tak wyglądają moje plik :
class.h
#ifndef CLASS_H
#define CLASS_H
#include < iostream>
#include <string >
using namespace std;
class Pracownik
{
// Pracownik
private:
string Imie;
string Nazwisko;
int numer;
int zarobek;
int licznik = 0;
public:
void menu(Pracownik **dane);
int get_licznik(){ return licznik; };
int get_licznik_z(){ licznik++; return licznik; };
void add_worker(Pracownik(**&dane), int ilosc);
int get(int kwota, int liczba) { Zarobki zarobki; zarobek = zarobki.stawka(kwota,liczba); return zarobki.stawka(kwota, liczba); }
void search_worker();
void reamove_worker(Pracownik **&dane,int ilosc);
void print();
string get_placuwka(){ Placowka placuwka; return placuwka.get_placowka(); }
class Zarobki
{
//Zarobki
private:
int zarobki;
double pensja;
int stawka_godzina;
int godziny;
public:
int stawka(int kwota,int liczba)
{
godziny = liczba;
stawka_godzina = kwota;
zarobki = stawka_godzina * godziny;
return zarobki;
};
};
Zarobki *temp;
class Placowka
{
// Placowki firmy
private:
string Miasto;
public:
string get_placowka(){ return Miasto; };
};
};
//---------------------------------------------ALOKACJA PAMIECI---------------------------------------------
#endif
No i oczywiście class.cpp
#include < iostream>
#include <fstream>
#include "class.h"
#include "variables.h"
int n = 1;
using namespace std;
Pracownik *pracownik = new Pracownik;
void Pracownik::menu(Pracownik **dane)
{
while (n != 0)
{
cout << "-- Witaj w bazie danych Pracownikow --" << endl;
cout << " Co chcesz zrobic : " << endl;
cout << " 1. Dodaj pracownika do bazy." << endl;
cout << " 2. Usun pracownika z bazy." << endl;
cout << " 3. Wyszukaj pracownika." << endl;
cout << " 4. Wyswietl wszystkich pracownikow." << endl;
cout << " 5. Usun wszystkich pracownikow." << endl;
cout << " 6. Zapisz pracownikow do bazy." << endl;
cout << " 0. Opusc program." << endl;
cout << " Opcja : ";
cin >> n;
Pracownik Osoba;
;
//sprawdzanie opcji
switch (n)
{
case 1:
//dodanie pracownika
add_worker(dane, 0);
break;
case 2:
// usniecie pracownika
break;
case 3:
// wyszukaj pracownika
break;
case 4:
// wyswietl pracownikow
break;
case 5:
//usun wszystkich pracownikow
reamove_worker(dane, 0);
break;
case 6:
//Zapisz pracownikow do bazy
break;
case 0:
//wyjscie z programu
break;
default:
break;
}
}
}
void Pracownik::add_worker(Pracownik (**&dane), int ilosc)
{
//zmienne pomocnicze
int stawka;
int liczba_godzin;
//----------------------------------WCZYTYWANIE DANYCH O PRACOWNIKACH---------------------------------------
cout << " Imie: ";
cin >> pracownik->Imie;
cout << endl << " Nazwisko: ";
cin >> pracownik->Nazwisko;
cout << endl << " Nr pracownika: ";
cin >> pracownik->numer;
cout << endl << " Stawka za godzine: ";
cin >> stawka;
cout <<endl<< " Liczba godzin: ";
cin >> liczba_godzin;
dane = new Pracownik*[ilosc];
// ---------------------------------WPROWADZANIE DANYCH DO TABLICY WSKAZNIKOW---------------------------------
if (ilosc == 0)
{
for (int i = 0; i < ilosc+1; i++)
{
dane[i] = new Pracownik;
dane[i]->Imie = pracownik->Imie;
dane[i]->Nazwisko = pracownik->Nazwisko;
dane[i]->numer = pracownik->numer;
dane[i]->zarobek = pracownik->get(stawka, liczba_godzin);
}
}
else
{
dane = new Pracownik*[ilosc + 1];
for (int i = ilosc; i < ilosc + 1; i++)
{
dane[ilosc+1] = new Pracownik;
dane[ilosc + 1]->Imie = pracownik->Imie;
dane[ilosc + 1]->Nazwisko = pracownik->Nazwisko;
dane[ilosc + 1]->numer = pracownik->numer;
dane[ilosc + 1]->zarobek = pracownik->get(stawka, liczba_godzin);
}
}
}
void Pracownik::reamove_worker(Pracownik (**&dane), int ilosc)
{
delete pracownik;
for (int i = 0; i <= ilosc; i++)
{
delete dane[i];
}
delete[]dane;
}
Dodaję tylko jedną osobę .
Po usunięciu danych w pętli for wyskakuje coś takiego przy Imie i Nazwisko : error reading characters of string , a później gdy usuwał całą tablicę wyskakuje błąd :
[img]http://oi58.tinypic.com/f4p44p.jpg[/img]