std::list remove & delete
Bonjour
J'ai un soucis les gars :roll:
Note: Ne faites pas attention au côté SDL le problème que j'ai est relatif aux listes chaînées.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
Uint32 move_world (Uint32 iv, void *arg){
std::list<Sprites::CRocket*> rockets = Player->getRockets();
std::list<Sprites::CRocket*>::iterator iter;
std::list<Sprites::CShooter*>::iterator shiter;
Uint32 *t = (Uint32*) arg;
SDL_Delay (*t);
if (!Pause){
bg->blitImage(screen);
Player->move();
Player->blitImage(screen);
for (shiter=shooters.begin(); shiter != shooters.end(); ++shiter){
(*shiter)->move();
(*shiter)->blitImage(screen);
}
for (iter=rockets.begin(); iter != rockets.end(); ){
Sprites::CRocket* r = *iter;
if (!r->canMove()){
iter = rockets.erase(iter);
rockets.remove(r);
delete r;// ############### PROBLEME###############
}
else
{
(*iter)->move();
(*iter)->blitImage (screen);
++iter;
}
}
SDL_Flip (screen);
}
return iv;
} |
Donc comme montré dans le code, mon delete foire. j'ai un seg fault et je ne omprend pas pourquoi. Si j'enlève le delete là ça marche mais par contre les objets restent en mémoires et je veux pas ça !
J'ai réalisé que le .remove() ne détruit pas l'objet, alors comment faire exactement ? Je m'y prend mal ?
Merci