surcharge operateur && pointeurs
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
Code:
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 |
Maclasse.cpp
Code:
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());
} |
main.cpp
Code:
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;
} |
l'execution donne :
Citation:
operator: <
a(1) < b(2)
operator: >
operator: ==
operator: !=
a(1) != b(2)
bon, a priori jusque là ça fonctionne.
j'en viens (enfin) à mon probleme:
je voudrais utiliser des pointeurs de Maclasse :
Code:
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);
... |
bien entendue les operateurs ne marchent pas.
si quelqu'un peut m'aiguiller sur comment utiliser ET la surcharge des opérateurs ET les pointeurs...
merci d'avance.