Bonjour,
mon problème est le suivant : j'aimerais parcourir une list avec un iterator, non const car j'appelle des méthodes des objets contenus dans la collection, et tout se passe très bien jusqu'à l'exécution où, au 2e parcours de la collection (car j'itère à l'intérieur d'une autre boucle), le programme plante et j'obtiens un zouli message d'erreur :
Voici mon code :Debug assertion failed !
...
Expression : list iterator not dereferencable
...
d'abord où j'initialise la list :
et ensuite où je l'utilise :
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 list<SjSl_Balloon> ballons; SjSl_Timer timer; srand(time(NULL)); for(unsigned int x=0; x<dim[0]; x++){ for(unsigned int y=0; y<dim[1]; y++){ for(unsigned int z=0; z<dim[2]; z++){ int pos[3]={x, y, z}; for(unsigned int nbBallon=0; nbBallon<SjSl_Random::GetInt(0, 3); nbBallon++){ SjSl_Balloon tmp(timer, pos); ballons.push_back(tmp); } } } }
Je n'arrive vraiment pas à comprendre d'où le problème peut venir car tout se passe au premier de la list ballons. En ce qui concerne la liste stations, je n'ai pas encore pu tester puisque le programme n'arrive pas jusque là...
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 list<SjSl_Balloon>::iterator itB; list<SjSl_WeatherStation>::iterator itS; list<SjSl_WeatherStation> stations=earth.GetStations(); while(true){ for(unsigned int d=0; d<31; d++){ for(unsigned int h=0; h<24; h++){ for(unsigned int mn=0; mn<60; mn++){ for(unsigned int s=0; s<60; s++){ int currentTime[4]={d, h, mn, }; timer.SetTime(currentTime); _sleep(10); } } itB=ballons.begin(); for(; itB!=ballons.end(); itB++){ (*itB).Move(earth); cout<<*itB<<endl; } } itS=stations.begin(); for(; itS!=stations.end(); itS++){ (*itS).BulletinMeteo(); cout<<"Bulletins météo rangés dans le répertoire ulletins"<<endl; } } }
Partager