Faktycznie działa. Problem był w tym, iż nie wywoływałem konstruktora i nic nie "siedziało" w tym obiekcie.
int main()
{ Person p = Person();
p.load(); }
Dzięki ^^, teraz z kolei stworzyłęm zmienną statyczną o nazwie rozmiar i inkrementuje ją jeżeli dodam jakąs osobę, ale gdy próbuje wczytać te 2 osoby wcześniejsze i tą trzecią dodaną to wystepuję błąd ..
#include<iostream>
using namespace std;
class Person{
static int rozmiar;
public:
int id[5], age[5];
string name[5], surname[5];
void add(); // adds person
void load(); // loads content from file
};
Tutaj nic nowego, ale jest deklaracja zmiennej statycznej prywatnej.
#include<iostream>
#include"person.h"
#include<fstream> // for reading from the file
#include<cstdlib> // for exit function
using namespace std;
int Person::rozmiar=2;
void Person::add()
{
fstream file;
rozmiar++;
cout << "ID: ";
cin >> id[rozmiar];
cout << "Name: ";
cin >> name[rozmiar];
cout << "Surname: ";
cin >> surname[rozmiar];
cout << "Age: ";
cin >> age[rozmiar];
file.open("person.txt", ios::out | ios::app);
file << id[rozmiar] << endl;
file << name[rozmiar] << endl;
file << surname[rozmiar] << endl;
file << age[rozmiar] << endl;
file.close();
}
void Person::load()
{
fstream file;
cout << "Rozmiar: " << rozmiar << endl;
file.open("person.txt", ios::in);
if(file.good()==false)
{
cout << "Cannot load the file";
exit(0);
}
string line;
int nr_line=1;
int number=0;
while (getline(file,line))
{
switch(nr_line)
{
case 1:
{
id[number]=atoi(line.c_str());
break;
}
case 2:
{
name[number]=line;
break;
}
case 3:
{
surname[number]=line;
break;
}
case 4:
{
age[number]=atoi(line.c_str());
break;
}
}
if (nr_line==4)
{
nr_line=1;
number++;
}
else
{
nr_line++;
}
}
file.close();
for(int i=0; i<rozmiar; i++)
{
cout << endl << "Person number: " << i+1 << endl;
cout << id[i] << endl;
cout << name[i] << endl;
cout << surname[i] << endl;
cout << age[i] << endl;
}
}
Wiem, że kod jest trochę długi, ale wolałem wrzucić wszystko. Dodałem do tego co już było : zmienna statyczna rozmiar startuje od 2 (mam już 2 osoby w pliku txt) i zostaje inkrementowana na początku metody add(); Potem gdy odpalam metodę load(), ale tym razem dla 3 osób, bo jedną dodałem, to program się sypie. A gdy otwieram ten plik notatnika txt to ta osoba się tam znajduje. Byłbym wdzięczny za pomoc