Pentru aceasta nu este locul potrivit pentru a pune această întrebare, așa că pentru referințe viitoare puneți aceste tipuri de întrebări pe Stack Overflow.
Nu dați cu adevărat suficient cod pentru a fi total siguri de ce nu este, dar un lucru care îmi vine în minte dat fiind eroarea este următorul. Mai întâi, rețineți că get(int i)
metoda returnează o copie a unui Card
, nu a ith Card
reală din Colecția de carduri. Aceasta înseamnă când :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
De fapt, setați variabila m_has_been_played_this_turn
pentru o Card
instanță, care poate fi de unde vine eroarea, deoarece această instanță temporară Card
ar trebui să fie o rvalue
, nu o lvalue
.
O modalitate de a schimba acest lucru ar putea fi schimbarea codului în următorul text:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Dar acest lucru încă nu va fi acc completați ceea ce cred că doriți, deoarece card_
este doar o copie a ith Card
din colecția dvs. de carduri. Dacă doriți cu adevărat să modificați ith Card
din colecția dvs. de carduri, schimbați definiția get(int i)
la următoarea:
Card & Card_collection::get(int i)
Că &
înseamnă că veți trece un Card
din get(int i)
prin referință, permițându-vă să modificați direct Card
în cadrul Colecției de carduri. Apoi, codul original pe care l-ați scris pentru a seta m_has_been_played_this_turn
ar trebui să fie în regulă.