Bonjour,
tous d'abord une première question pour L1=L1;
avec L1 un objet quelconque .
la syntaxe de l'opérateur serai donc : Object operator = ( Object L){... return *this}
Afin de passer en paramètre une copie de L1 ,qui me permettra de supprimer L1 et de le recopier à partir de sa copie ?

Deuxième question j'ai un bug dans l'exécution de mon code je ne comprend pas pourquoi.

(les fonctions sont volontairement tronquées)
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
 
class Liste { ...
 
Liste(){prems=NULL;last=NULL;}
 
Liste(int k){   // constructeur spécial
		prems = new Maillon2;
		prems->valeur=2;
		prems->suivant=NULL;
		last=prems;		
}
Liste operator = (const Liste L1){ //mon operator = 
		//free2();		
		prems = new Maillon2;
		prems->valeur=2;
		prems->suivant=NULL;
		last=prems;	
		return *this;
}
void afficher(){
		Maillon2 *temp=prems;
		if(prems==NULL)
			cout<< "Liste vide" << endl;
		while(temp!=NULL){
			temp->afficher();
			temp=temp->suivant;
		}
}
dans mon main je fait

Liste L1(1),L2;
L1.afficher();
L2.afficher();

cela fonctionne correctement mais si je fait .

Liste L1(1),L2;
L2=L1;
L1.afficher();
L2.afficher();

A l'exécution j'ai une erreur type corruption de mémoire .Je ne comprend pas pk surtout que le code et le même pour l'opérateur = et mon constructeur spécial.