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)
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;
 }
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
 
	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;
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.
:s