Bonjour,
J'ai surchargé les 6 opérateurs de comparaison pour comparer un identifiant.
La surcharge marche parfaitement sous Windows et Linux Mandriva 2007 mais lorsque je le met sur un server Unix ces surcharges ne fonctionnent plus ?? (Plus précisement il affiche toujours que les 2 identifiants sont différent) Or sur les autres plateformes ca marche.
Voici l'appel :
et le code :
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 system("cls"); cout<<endl<<"\t\t\t\t\t\tOPERATEUR DE COMPARAISON"<<endl; cout<<"\t\t\t\t\t\t------------------------"<<endl<<endl; log<<"Test des opérateurs de comparaison"; if((pm2.getID() < pm.getID())) cout<<" * ID de PM2 est plus petit que ID de PM"<<endl<<endl; f((pm.getID() <= pm2.getID())) cout<<" * ID de PM est plus petit ou egale a ID de PM2"<<endl<<endl; if((pm2.getID() > pm.getID())) cout<<" * ID de PM2 est plus grand que ID de PM"<<endl<<endl; if((pm2.getID() >= pm.getID())) cout<<" * ID de PM2 est plus grand ou egale a ID de PM"<<endl<<endl; if((pm.getID() == pm2.getID())) cout<<" * ID de PM est egale a ID de PM2"<<endl<<endl; if((pm.getID() != pm2.getID())) cout<<" * ID de PM est different de ID de PM2"<<endl<<endl; system("PAUSE"); break;
La méthode getID() retourne biensur un objet Identifiant.
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
40
41
42 int Identifiant::operator<(Identifiant & id) { if((strcmp(toString(), id.toString())) == -1) return 1; return 0; } int Identifiant::operator<=(Identifiant & id) { if((strcmp(toString(), id.toString())) == -1) return 1; return 0; } int Identifiant::operator>(Identifiant & id) { if((strcmp(toString(), id.toString())) == 1) return 1; return 0; } int Identifiant::operator>=(Identifiant & id) { if((strcmp(toString(), id.toString())) == 1) return 1; return 0; } int Identifiant::operator==(Identifiant & id) { if((strcmp(toString(), id.toString())) == 0) return 1; return 0; } int Identifiant::operator!=(Identifiant & id) { if((strcmp(toString(), id.toString())) != 0) return 1; return 0; }
Avez vous une idée sur la raison du mauvais fonctionnement ???
Merci
Bonne journée
Partager