Chiusa. Questa domanda è fuori tema . Attualmente non accetta risposte.

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *