Bonjour.
J'ai cr�e une classe "Point" (un point = 2 coordonn�es) juste dans le but d'essayer de faire des surcharge d'op�rateurs et de comprende un peu comment tout cela fonctionne.
Sans rentrer dans les d�tails de la classe, mon but est de pouvoir surcharger l'op�rateur "=" de fa�on a faire une copie d'un Point. J'ai d'abord �crit une fonction "equals" de mani�re normale, et je l'ai ensuite modif�e pour surcharger "=". Probl�me: ma fonction "equals" fonctionne, mais pas mon op�rateur "=":
et dans mon main:
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 //temp Point* Point::equals(Point* p) { delete this; Point* temp = new Point(p); return temp; } //operators: Point* Point::operator=(Point* p) { delete this; Point* temp = new Point(p); return temp; }
Que dois-je modifier � ma fonction "equals" pour en faire un op�rateur "=" qui ait le m�me comportement, et que n'ais-je pas compris?
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 int main(void) { Point* p1 = new Point(2,3); // p1 = (2,3) Point* p2 = new Point(); // p2 = (0,0) Point* p3 = new Point(); // p3 = (0,0) p2->equals(p1); // p2 = (2,3) p3 = p1; // p3 = (2,3) p1->SetXY(10,10); // ERREUR: ça modifie p1 ET p3. // donc p3 n'est pas une "deep copy" de p1, mais juste un "alias". // pourquoi??? return 0; }
Merci
Partager