Fermé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *