Bonjour

J'ai un soucis les gars
Note: Ne faites pas attention au côté SDL le problème que j'ai est relatif aux listes chaînées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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