Risposta
Questo non è il posto giusto per porre questa domanda, quindi per riferimento futuro poni questo tipo di domande su Stack Overflow.
In realtà non fornisci codice sufficiente per essere completamente sicuro di ciò che non va, ma una cosa che viene in mente dato lerrore è la seguente. Innanzitutto, nota che il tuo get(int i)
restituisce una copia di un Card
, non leffettivo ith Card
dalla raccolta di carte. Ciò significa che quando lo fai :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Stai effettivamente impostando la m_has_been_played_this_turn
variabile per una Card
istanza, che potrebbe essere la causa dellerrore poiché questa istanza Card
temporanea dovrebbe essere un rvalue
, non un lvalue
.
Un modo per cambiare questo potrebbe essere cambiare il codice nel seguente modo:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Ma questo non accadrà ancora omplish quello che credo tu voglia, poiché card_
è solo una copia del Card
nella tua raccolta di carte. Se desideri veramente modificare la Card
nella tua raccolta di carte, cambia la definizione di get(int i)
come segue:
Card & Card_collection::get(int i)
Questo &
significa che passerai un Card
da get(int i)
per riferimento, consentendo di modificare direttamente Card
allinterno della raccolta di carte. Quindi il codice originale che hai scritto per impostare m_has_been_played_this_turn
dovrebbe andare bene.