Potrebuju vymazat a deletovat polozky (pointery na objekty) z listu pri prochazeni toho vseho.
Tady mam definici toho listu:
std::list<entity*> entities;
Tady pak je ten vlastni loop: for(std::list<entity*>::iterator i=entities.begin();i!=entities.end();){
// tady je spousta ruznych prikazu tykajicich se (*i) a hlavne pak dalsi vnoreny loop, kde se tesuji kolize se vsemi dalsimi objekty (v zasade se jedna o temer stejnou smycky jako je ta prvni, akorat se tam pouziva iterator ii)
if((*i)->life<=0){
delete (*i);
i=entities.erase(i); // tady dojde k chybe, docela i chapu proc. jen si rikam, ze by to treba mohlo smazat jen ten obsah a ne ten vlastni iterator :)
continue;
}
// tady pak pokracuji jeste nejake dalsi akce s (*i)
i++;
}
Taky jsem pak zkousel jeste jednu variantu: if((*i)->life<=0){
entity* eTemp=(*i);
i=entities.erase(i);
delete eTemp;
continue;
}
Nevite jak udelat to o co se snazim? Nasel jsem spustu odpovedi na to, jak to delat bez toho delete, to delete to ale hrozne zabiji :(