Salut,
Je voudrais savoir s'il était possible d'avoir une classe où on définit une méthode qui a comme argument un objet de cette même classe.
Un exemple ne serait pas de refus :oops:
Merci d'avance.
Version imprimable
Salut,
Je voudrais savoir s'il était possible d'avoir une classe où on définit une méthode qui a comme argument un objet de cette même classe.
Un exemple ne serait pas de refus :oops:
Merci d'avance.
Biensur :
Et par exemple :Code:
1
2
3
4
5
6
7
8
9
10 class A { void func(A &Obj); private : int x; } void A::func ( A &Obj) { Obj.x = 2*x; }
Code:
1
2
3 A Tst; A Truc; Truc.func(tst);
[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
Merci beaucoup
Un bon exemple pour cette question est l'opérateur de recopie (très utile, notamment pour utiliser certains templates):
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class A { public: A* A(A &source); private: int unEntier; } A* A(A &source) { unEntier = source.unEntier; return this; //utilile pour les trucs du style A* a = (A*) b = (A*) c ... }
1/ Un constructeur par copie prend en général une référence constanteCitation:
Code:
1
2
3
4
5 A* A(A &source) { unEntier = source.unEntier; return this; //utilile pour les trucs du style A* a = (A*) b = (A*) c ... }
2/ Un constructeur, par copie ou non, ne renvoie rien.
3/ "A* a = (A*) b = (A*) c" -> ça compilera peut-être, mais ça ne servira à rien. Et ça n'utilisera en aucun cas une éventuelle valeur de retour du constructeur par copie.
euh oui :oops: j'ai fait un gros mix entre l'operateur = et le constructeur de recopie.
Je copierais 100 fois "je ne posterais plus le dimanche!"
(normalement, je ne devrais plus poster le lundi matin non plus... :lol: )