Copie, affectation, et pointeurs
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) :
Citation:
00
isEmpty : 1
isEmpty : 0
Erreur de segmentation (core dumped)
Code:
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:
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