Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.

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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *