Svar
Till detta är inte rätt ställe att ställa denna fråga, så för framtida referens, ställ dessa typer av frågor på Stack Overflow.
Du ger inte riktigt tillräckligt med kod för att vara helt säker på vad som är fel, men en sak som kommer att tänka på med tanke på felet är följande. Observera först att din get(int i)
-metoden returnerar en kopia av en Card
, inte den faktiska ith Card
från kortsamlingen. Detta betyder när du gör :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Du ställer faktiskt in m_has_been_played_this_turn
för en tillfällig Card
instans, vilket kan vara där felet kommer ifrån eftersom denna tillfälliga Card
instans bör vara en rvalue
, inte en lvalue
.
Ett sätt att ändra detta kan vara att ändra din kod till följande:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Men detta kommer fortfarande inte att överensstämma med omplish vad jag tror du vill, eftersom card_
bara är en kopia av ith Card
i din kortsamling. Om du verkligen vill ändra ith Card
i din kortsamling ändrar du definitionen get(int i)
till följande:
Card & Card_collection::get(int i)
Att &
betyder att du kommer att skicka en Card
av get(int i)
genom referens, så att du kan ändra Card
i kortsamlingen direkt. Då ska den ursprungliga koden du skrev för att ställa in m_has_been_played_this_turn
vara bra.