Mam problem z logowaniem klienta. Jest jakiś problem ze wskaźnikiem, ale nie wiem o co chodzi, bo nie do końca rozumiem działanie wskaźników. Błąd pojawia się w 60 linii(chodzi o wywołanie funkcji
proces_logowania(&PIN, client)
) funkcji logowanie i 59-61 linii(chodzi o przypisanie w zmiennych na wskaźniku obj -> _PIN = *PIN;obj -> _Stan_konta = StanyKont[i];obj -> _index = i;
funkcji proces_logowania. Efektem tego jest zawieszenie konsoli. Problem jest w miejscach, gdzie wskazuję wskaźnikiem 'obj ->' na zmienne klasy Klient w funkcji proces_logowania, linie 59-61..
logowanierejestracja.cpp
```cpp
void Bankomat::logowanie(Klient* &client)
{
int PIN;
while(true)
{
system("cls");
cin.clear();
cin.sync();
cout << "===== LOGOWANIE =====";
if(proby < 3 && proby > 0)
{
cout << " Pozostaly " << proby << " proby!";
}
else if(proby == 0)
{
system("cls");
for(int i = 60; i >= 0; i--)
{
system("cls");
cout << "Probowano zalogowac sie zbyt duzo razy! Poczekaj " << i << " sek!";
Sleep(1000);
}
proby = 3;
}
cout << endl << endl;
cout << "Podaj PIN: ";
cin >> PIN;
ostringstream ss;
ss << PIN;
string stringPIN = ss.str();
int dlugosc = stringPIN.length();
ss.str("");
if(!PIN)
{
cout << endl << endl;
cout << "Podaj cztery cyfry!";
Sleep(2000);
proby--;
}
else if(dlugosc < 4 || dlugosc > 4)
{
cout << endl << endl;
cout << "PIN musi posiadac cztery cyfry!";
Sleep(2000);
proby--;
}
else
{
proces_logowania(&PIN, client);
break;
}
}
}
proceslogowaniarejestracji.cpp
void Bankomat::proces_logowania(int *PIN, Klient * obj)
{
fstream plik;
plik.open("klienci.txt", ios::in);
if(plik.good() == false)
{
system("cls");
cout << "Blad polaczenia z baza danych!";
Sleep(2000);
}
else
{
wczytaj_ilosc_klientow();
int *PINy = new int[ilosc_klientow];
int *StanyKont = new int[ilosc_klientow];
int nr_linii = 1;
string linia;
int licznik = 0, licznik2 = 0;
while(getline(plik, linia))
{
switch(nr_linii)
{
case 1:
{
PINy[licznik] = atoi(linia.c_str());
licznik++;
break;
}
case 2:
{
StanyKont[licznik2] = atoi(linia.c_str());
licznik2++;
break;
}
}
if(nr_linii == 2)
{
nr_linii = 0;
}
nr_linii++;
}
int licznik_klientow = 0;
plik.close();
plik.clear();
for(int i = 0; i < ilosc_klientow; i++)
{
if(*PIN == PINy[i])
{
obj -> _PIN = *PIN;
obj -> _Stan_konta = StanyKont[i];
obj -> _index = i;
delete[] PINy;
delete[] StanyKont;
for(int j = 3; j > 0; j--)
{
system("cls");
cout << "Za " << j << " sek. nastapi przekierowanie...";
Sleep(1000);
}
}
else
{
licznik_klientow++;
}
}
if(licznik_klientow == ilosc_klientow)
{
cout << endl << endl;
cout << "Brak podane PINu w bazie danych!";
proby--;
Sleep(2000);
}
}
}