Svar
Til dette er ikke det rigtige sted at stille dette spørgsmål, så spørg disse typer spørgsmål til fremtidig reference på Stack Overflow.
Du giver ikke rigtig nok kode til at være helt sikker på, hvad der er galt, men en ting, der kommer til at tænke på i betragtning af fejlen, er følgende. Bemærk først, at din get(int i)
-metoden returnerer en kopi af en Card
, ikke den aktuelle ith Card
fra kortsamlingen. Dette betyder, når du gør :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Du indstiller faktisk m_has_been_played_this_turn
-variablen for en midlertidig Card
forekomst, hvilket kan være, hvor fejlen kommer fra, da denne midlertidige Card
forekomst skal være en rvalue
, ikke en lvalue
.
En måde at ændre dette på kan være at ændre din kode til følgende:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Men dette er stadig ikke i overensstemmelse med udfyld det, jeg tror, du vil have, da card_
kun er en kopi af ith Card
i din kortsamling. Hvis du virkelig vil ændre ith Card
i din kortsamling, skal du ændre definitionen get(int i)
til følgende:
Card & Card_collection::get(int i)
At &
betyder, at du vil sende en Card
ud af get(int i)
som reference, så du kan ændre Card
i kortsamlingen direkte. Derefter skal den originale kode, du skrev for at indstille m_has_been_played_this_turn
, være i orden.