Stängd. Denna fråga är utanför ämnet . För närvarande accepteras inte svar.

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *