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

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ć?

0

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

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1