cin.getline + operatory

cin.getline + operatory
0

Mam malutki problem otóż w grze ruletka zczytyuje imie gracza cin.getline

for(i=0;i<int_liczba_graczy;i++)
{
Gracze[i] = new CGracz;
cout<<"Podaj imie "<<i+1<<" gracza"<<endl;
cin.getline(Gracze[i]->m_cImie,30);
}

Problem: Nie mogę wpisać imienia pierwszego gracza. Reszta wpisuje się ok.

oraz podczas podliczanie stawki wywołuje operator + oraz -:

gracz->szmal+(gra->m_iPrzelicznik*gracz->m_iStawka); //jak wygrasz
gracz->szmal-gracz->m_iStawka;//jak przegrasz

oto operatory:
CKasa &CKasa::operator-(int ile)
{
m_iIlosc=m_iIlosc-ile;
return(*this);
}
CKasa &CKasa::operator+(int ile)
{
m_iIlosc=m_iIlosc+ile;
return(*this);
}

Proszę o wskazanie błędu, dziękuję z góry i pozdrawiam

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 2 godziny
0

Co do imienia gracza to pewnie jakieś resztki z wcześniejszej wersji kodu w strumieniu tkwią (np eneter nie wiem co ci się pokazuje jako to imię), wczytaj wcześniej dowolnego stringa i powinno być ok

0

Dzieki wielkie problem rozwiązany. Jeszcze operatory wie ktoś jak to zmienić?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

To co zrobiłeś to typowe rozwiązanie dla -= i +=

Kopiuj
CKasa &CKasa::operator-=(int ile)
  {
   m_iIlosc=m_iIlosc-ile;
   return(*this);
  }

CKasa &CKasa::operator+=(int ile)
  {
   m_iIlosc=m_iIlosc+ile;
   return(*this);
  }

operatory + i - nie powinni zmieniać wartości operandów.

Kopiuj
CKasa CKasa::operator-(int ile)const
  {
   return CKasa(m_iIlosc-ile);
  }

CKasa CKasa::operator+(int ile)const
  {
   return CKasa(m_iIlosc+ile);
  }

Jeżeli nie masz odpowiedniego konstruktora to go dopisz.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.