Uzavřeno. Tato otázka je mimo téma . Momentálně nepřijímá odpovědi.

Odpověď

Na toto není správné místo pro položení této otázky, takže pro budoucí použití si položte tyto typy otázek na přetečení zásobníku.

Skutečně nedáte dostatek kódu, abyste si byli zcela jisti, co se děje, ale jedna věc, která vám na základě této chyby přijde na mysl, je následující. Nejprve si všimněte, že váš

metoda vrací kopii Card, nikoli skutečné i Card ze sbírky karet. To znamená, když tak učiníte :

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

Ve skutečnosti nastavujete proměnnou m_has_been_played_this_turn pro dočasnou Card instance, což může být místo, odkud chyba pochází, protože tato dočasná Card instance by měla být rvalue, nikoli lvalue.

Jedním ze způsobů, jak to změnit, může být změna kódu na následující:

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

Ale tohle se ještě nehodlá doplňte to, o čem si myslím, že chcete, protože card_ je jen kopií ith Card ve vaší sbírce karet. Pokud opravdu chcete upravit i Card ve své kolekci karet, změňte definici get(int i) na následující:

Card & Card_collection::get(int i) 

To & znamená, že z iv id = „projdete Card 256a25ed4e „>

odkazem, který umožňuje přímo upravit Card v rámci kolekce karet. Pak by původní kód, který jste napsali k nastavení m_has_been_played_this_turn, měl být v pořádku.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *