Til dette er ikke det rette stedet å stille dette spørsmålet, så still disse spørsmålene i Stack Overflow for fremtidig referanse.
Du gir egentlig ikke nok kode til å være helt sikker på hva som er galt, men en ting som du kommer til å tenke på gitt feilen er følgende. Vær først oppmerksom på at get(int i)
-metoden returnerer en kopi av en Card
, ikke den faktiske ith Card
fra kortsamlingen. Dette betyr når du gjør det :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Du setter faktisk inn m_has_been_played_this_turn
-variabelen for en midlertidig Card
forekomst, som kan være der feilen kommer fra, siden denne midlertidige Card
forekomsten skal være en rvalue
, ikke en lvalue
.
En måte å endre dette på kan være å endre koden til følgende:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Men dette kommer fremdeles ikke til iht omplish det jeg tror du vil, siden card_
bare er en kopi av ith Card
i kortsamlingen din. Hvis du virkelig vil endre ith Card
i kortsamlingen din, kan du endre definisjonen get(int i)
til følgende:
Card & Card_collection::get(int i)
At &
betyr at du vil sende en Card
ut av get(int i)
ved henvisning, slik at du kan endre Card
i kortsamlingen direkte. Da skulle den opprinnelige koden du skrev for å angi m_has_been_played_this_turn
være i orden.