Bonsoir,
Au lieu d'utiliser une méthode qui ne retourne rien (void), je souhaiterais créer une méthode qui retourne l'objet en cours.
Voici un exemple en Java :
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 class Test{ private val; public Test(){ val = 0; } public int getVal(){ return val; } public Test ajoute(int a){ val += a; return this; } } /* DANS LE MAIN */ void main(String[] args){ Test obj1 = new Test(); // obj1.getVal() = 0 Test obj2 = obj1.ajoute(1).ajoute(2); // obj1.getVal() et obj2.getVal() = 3 obj1.ajoute(997); // obj1.getVal() et obj2.getVal() = 1000 }
Je souhaiterais donc recréer l'exemple du dessus en C++ sans avoir à utiliser la surcharge des opérateurs (operator).
Voici ma classe C++ :
La définition de mes méthodes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Test { public: Test(int a = 0); int getVal(); Test& ajouter(int a); private: int val; };
L'exemple avec la méthode ajoute() que j'ai choisis est simple (démonstration), cela aurait pu être une méthode beaucoup plus complexe, l'idée est juste de retourner l'objet en cours une fois avoir travaillé dans la méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Test::Test(int a) : val(a) {} int Test::getVal() { return val; } Test& Test::ajoute(int a) { val += a; return *this; }
Je souhaiterais vous demander si la syntaxe de ma classe et de la définition de mes méthodes respectent les normes du C++[/COLOR].
Je vous remercie
Partager