Lukket. Dette spørgsmål er uden for emnet . Det accepteres i øjeblikket ikke svar.

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *