bonjour a tous,
j'ai un petit probleme avec la surcharge d'operateur.
j'ai une classe Maclasse qui possede entre autre un membre entier.
je souhaite que la comparaison de deux instances de Maclasse revienne à faire la comparaison de leur membre entier respectif (c'est pas clair)
Maclasse.h
Maclasse.cpp
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 #ifndef MACLASSE_H #define MACLASSE_H class Maclasse { public: Maclasse (int = 0); int getint() const; bool operator < (Maclasse); bool operator > (Maclasse); bool operator == (Maclasse); bool operator != (Maclasse); ... private: int entier; ... }; #endif
main.cpp
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
29
30
31
32
33
34
35
36
37
38
39 #include <iostream> #include "Maclasse.h" using namespace std; Maclasse:: Maclasse(int i) { entier = i; } int Maclasse:: getint() const { return entier; } bool Maclasse:: operator < (Maclasse m) { cout << "operator <" << endl; return(entier < m.getint()); } bool Maclasse :: operator > (Maclasse m) { cout << "operator >" << endl; return(entier > m.getint()); } bool Maclasse :: operator == (Maclasse m) { cout << "operator ==" << endl; return(entier == m.getint()); } bool Maclasse :: operator != (Maclasse m) { cout << "operator !=" << endl; return(entier != m.getint()); }
l'execution donne :
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
29 #include <iostream> #include "Maclasse.h" using namespace std; int main () { maclasse a(1); maclasse b(2); if(a < b) { cout << "a(1) < b(2)" << endl; } if(a > b) { cout << "a(1) > b(2)" << endl; } if(a == b) { cout << "a(1) == b(2)" << endl; } if(a != b) { cout << "a(1) != b(2)" << endl; } return 0; }
bon, a priori jusque là ça fonctionne.operator: <
a(1) < b(2)
operator: >
operator: ==
operator: !=
a(1) != b(2)
j'en viens (enfin) à mon probleme:
je voudrais utiliser des pointeurs de Maclasse :
bien entendue les operateurs ne marchent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 maclasse *a = new maclasse(1); // au lieu de: maclasse a(1); maclasse *b = new maclasse(2); // au lieu de: maclasse b(2); ...
si quelqu'un peut m'aiguiller sur comment utiliser ET la surcharge des opérateurs ET les pointeurs...
merci d'avance.
Partager