geschlossen. Diese Frage ist nicht zum Thema . Derzeit werden keine Antworten akzeptiert.

Antwort

Dies ist nicht der richtige Ort, um diese Frage zu stellen. Stellen Sie diese Art von Fragen zum späteren Nachschlagen zum Stapelüberlauf.

Sie geben nicht wirklich genug Code an, um ganz sicher zu sein, was falsch ist, aber eine Sache, die angesichts des Fehlers in den Sinn kommt, ist die folgende. Beachten Sie zunächst, dass Ihre get(int i) -Methode gibt eine Kopie eines Card zurück, nicht des tatsächlichen i-ten Card aus der Kartensammlung. Dies bedeutet, wenn Sie dies tun :

(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0; 

Sie setzen tatsächlich die Variable m_has_been_played_this_turn für eine temporäre Card -Instanz, von der der Fehler möglicherweise stammt, da diese temporäre Card -Instanz eine rvalue und keine lvalue.

Eine Möglichkeit, dies zu ändern, besteht darin, den Code wie folgt zu ändern:

Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0; 

Aber das wird immer noch nicht gem Vervollständigen Sie, was ich glaube, dass Sie wollen, da card_ nur eine Kopie des i-ten Card in Ihrer Kartensammlung ist. Wenn Sie die i-te Card in Ihrer Kartensammlung wirklich ändern möchten, ändern Sie die Definition get(int i) wie folgt:

Card & Card_collection::get(int i) 

Das & bedeutet, dass Sie eine Card von als Referenz, sodass Sie die Card direkt in der Kartensammlung direkt ändern können. Dann sollte der ursprüngliche Code, den Sie geschrieben haben, um m_has_been_played_this_turn festzulegen, in Ordnung sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.