Bonjour/bonsoir,
Mon problème se situe lors de l'exécution (compilation sans erreur ni warnning)
... plantage (Classique me direz vous).
j'ai cherché sur google, mais rien ne m'a aidé (j'ai tenté un "#include <stdlib.h>" en tête de fichier cpp, mais ça n'a rien changé ; j'ai testé de remplacer NULL par 0, et rien à faire)
DONC
Dans mon programme, je manipule une collection d'entiers, cette collection est en fait une liste chaînée sous forme de classe :
attributs :
"CSet_int_unit" est une structure dont voici la déclaration :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CSet_int_unit* colstart; // pointeur sur le premier élément int nelem; // nombre d'éléments chaînés
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 // .h struct CSet_int_unit { int valeur; CSet_int_unit* next; void init(int val); void setTarget(CSet_int_unit* ); }; // .cpp void CSet_int_unit::init(int val){ valeur = val; next = NULL; } void CSet_int_unit::setTarget(CSet_int_unit* p){ next = p; }
j'ai peu à peu commenté puis dé commenté les instructions et je tombe donc sur celle qui suit :
Sensée tester si la structure courante est la dernnière (son attribut pointeur est null) le programme plante quelqu'un aurait une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 bool CSet_int::add(int n=0){ CSet_int_unit* tmp = colStart; while(tmp->next != NULL){ tmp = tmp->next;} // ça plante là. if(tmp->next == NULL){ tmp->next = new CSet_int_unit; tmp->next->init(n); nelem++; return true; } return false; }
Merci d'avance !![]()
Partager