Bonjour,
Je suis assez bien bloquée depuis hier sur un problème. J'ai un niveau assez basique en C++...
J'ai écrit une classe qui est en gros une liste chaînée à l'aide de pointeurs : elle a un champ valeur, et un pointeur vers une autre liste, qui a elle-même une valeur etc.
Bon, jusque là, ok.
Le problème (entre autres) que je rencontre, c'est avec les constructeurs de copie et d'assignation. J'ai pensé y faire appel de façon récursive,
Je reçois cette erreur à l'exécution (plus d'erreur lors de la compil) :
00
isEmpty : 1
isEmpty : 0
Erreur de segmentation (core dumped)J'ai un main, qui fait basiquement cela :
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 maListe::maListe(const maListe& ml) { push(ml.getData()); if (not ml.isEmpty()) { maListe temp = ml; while (not temp.isEmpty()) { push(temp.getData()); temp = temp.getNextListe(); // retourne l'objet pointé par le pointeur, une liste, donc } } } maListe& maListe::operator=(const maListe &ml ) { if ( this != &ml ) { push(ml.getInfo()) if (not ml.isEmpty()) { maListe temp = ml; while (not temp.isEmpty()) { push(temp.getData()); temp = temp.getNextListe(); } } } return *this; }
Quelqu'un pourrait me guider un peu, voire me guider vers des liens ? J'ai lu beaucoup de choses mais je m'y perds et finalement, je ne sais plus du tout comment procéder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 maListe ml1; cout << ml1.getNext() << ml1.getData() << endl; maListe ml2; cout << "isEmpty : " << ml1.isEmpty() << endl; ml1.push(3); cout << "isEmpty : " << ml1.isEmpty() << endl; maListe ml3 = ml1; cout << ml3.isEmpty() << endl;
:s
Partager