Vastaa
Tähän ei ole oikea paikka kysyä, joten kysy tällaisia kysymyksiä pinon ylivuotoa varten myöhempää tarvetta varten.
Et todellakaan anna tarpeeksi koodia ollaksesi täysin varma siitä, mikä vikaa, mutta yksi asia, joka tulee mieleen virheen takia, on seuraava. Huomaa ensin, että get(int i)
-menetelmä palauttaa kopion Card
-koodista, ei varsinaisen ith Card
-kortin kokoelmasta. Tämä tarkoittaa, kun teet :
(*Turn).getBoard().get(i).m_has_been_played_this_turn = 0;
Olet itse asettamassa muuttujaa m_has_been_played_this_turn
väliaikaiselle Card
-esiintymä, josta virhe voi tulla, koska tämän väliaikaisen Card
-esiintymän tulisi olla rvalue
, ei lvalue
.
Yksi tapa muuttaa tämä voi olla koodin vaihtaminen seuraavaksi:
Card card_ = (*Turn).getBoard().get(i); card_.m_has_been_played_this_turn = 0;
Mutta tämä ei vieläkään tule mukaan omplish mitä uskon haluavasi, koska card_
on vain kopio korttisi kokoelmasta Card
. Jos haluat todella muokata korttikokoelmasi ith Card
-tunnusta, muuta get(int i)
-määritys seuraavaksi:
Card & Card_collection::get(int i)
Tämä &
tarkoittaa, että välität Card
get(int i)
viitteellä, jonka avulla voit muokata Card
-korttikokoelmassa suoraan. Sitten alkuperäisen koodin, jonka kirjoitit asettamaan m_has_been_played_this_turn
, pitäisi olla hieno.