Answer
Hiervoor is niet de juiste plaats om deze vraag te stellen, dus stel dit soort vragen voor toekomstig gebruik op Stack Overflow.
Je geeft niet echt genoeg code om helemaal zeker te zijn wat er mis is, maar een ding dat in je opkomt gezien de fout is het volgende. Merk allereerst op dat je get(int i)
methode retourneert een kopie van een Card
, niet de daadwerkelijke ith Card
uit de kaartverzameling. Dit betekent dat wanneer u dat doet :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
U stelt feitelijk de m_has_been_played_this_turn
variabele in voor een tijdelijke Card
-instantie, waar de fout mogelijk vandaan komt, aangezien deze tijdelijke Card
-instantie een rvalue
moet zijn, niet een lvalue
.
Een manier om dit te wijzigen, is door uw code als volgt te wijzigen:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Maar dit gaat nog steeds niet kloppen vul aan wat ik denk dat je wilt, aangezien card_
slechts een kopie is van de ith Card
in je kaartverzameling. Als u de ith Card
in uw kaartverzameling echt wilt wijzigen, wijzigt u de get(int i)
-definitie in het volgende:
Card & Card_collection::get(int i)
Dat &
betekent dat je een Card
uit get(int i)
door middel van verwijzing, waardoor u de Card
binnen de kaartverzameling rechtstreeks kunt wijzigen. Dan zou de originele code die je schreef om m_has_been_played_this_turn
in te stellen in orde moeten zijn.