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)
dans mon main je fait
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; } }
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.
Partager