Réponse
Ce nest pas le bon endroit pour poser cette question, donc pour référence future, posez ces types de questions sur Stack Overflow.
Vous ne donnez pas vraiment assez de code pour être totalement sûr de ce qui ne va pas, mais une chose qui vous vient à l’esprit étant donné l’erreur est la suivante. Tout d’abord, notez que votre get(int i)
renvoie une copie dun Card
, et non le ith réel Card
de la collection de cartes. Cela signifie quand vous le faites :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Vous définissez actuellement la variable m_has_been_played_this_turn
pour un Card
, qui peut être la source de lerreur puisque cette instance Card
temporaire doit être un rvalue
, pas un lvalue
.
Une façon de changer cela peut être de changer votre code comme suit:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Mais cela ne va toujours pas accéder Accomplissez ce que je pense que vous voulez, car card_
nest quune copie du ith Card
de votre collection de cartes. Si vous voulez vraiment modifier la ith Card
dans votre collection de cartes, changez la définition de get(int i)
comme suit:
Card & Card_collection::get(int i)
Que &
signifie que vous passerez un Card
sur get(int i)
par référence, vous permettant de modifier le Card
directement dans la collection de cartes. Ensuite, le code dorigine que vous avez écrit pour définir m_has_been_played_this_turn
devrait convenir.