Probleme de redefinition d'operator en C++
raoul31
Messages postés
2
Statut
Membre
-
char snipeur -
char snipeur -
Bonjour je developpe un projet en C++ et j'ai besoin de redefinir les operateurs de comparaisons
je cree ma classe de cette facon :
voila pour la declaration et pour la definition de la redeclaration des operateurs je vais ceci :
et pour chaque redeclaration j'obtiens comme message d'erreur :
-->
e:\iut\c++\projet\reference.h(25) : error C2380: type(s) preceding 'reference' (constructor with return type, or illegal redefinition of current class-name?)
et -->
e:\iut\c++\projet\reference.cpp(80) : error C2556: 'int __thiscall reference::operator <(const class reference &)' : overloaded function differs only by return type from 'class reference __thiscall reference::operator <(const class reference &)'
e:\iut\c++\projet\reference.h(28) : see declaration of '<'
donc si vous pouvez m'eclaircir sur ces obscurs erreurs je vous remercie d'avance
je cree ma classe de cette facon :
#include <string>
#include "sortedvector.h"
class reference
{
private:
string mot;
sortedvector<int> Pdef;
sortedvector<int> Pref;
public:
reference (string ="",int =0,int = 0);
void ajouterPdef(int);
void ajouterPref(int);
void supprimerPdef(int);
void supprimerPref(int);
void modifierPdef(int,int);
void modifierPref(int,int);
void afficherPdef();
void afficherPref();
void Setmot (string);
//redefinition des operateurs
int reference operator ==(const reference &);
int reference operator >=(const reference &);
int reference operator <=(const reference &);
int reference operator <(const reference &);
int reference operator >(const reference &);
};
voila pour la declaration et pour la definition de la redeclaration des operateurs je vais ceci :
int reference::operator < (const reference & comparer)
{
return (mot < comparer.mot);
}
int reference::operator <= (const reference & comparer)
{
return (mot <= comparer.mot);
}
int reference::operator > (const reference & comparer)
{
return (mot > comparer.mot);
}
int reference::operator >= (const reference & comparer)
{
return (mot >= comparer.mot);
}
int reference::operator == (const reference & comparer)
{
return (mot == comparer.mot);
}
et pour chaque redeclaration j'obtiens comme message d'erreur :
-->
e:\iut\c++\projet\reference.h(25) : error C2380: type(s) preceding 'reference' (constructor with return type, or illegal redefinition of current class-name?)
et -->
e:\iut\c++\projet\reference.cpp(80) : error C2556: 'int __thiscall reference::operator <(const class reference &)' : overloaded function differs only by return type from 'class reference __thiscall reference::operator <(const class reference &)'
e:\iut\c++\projet\reference.h(28) : see declaration of '<'
donc si vous pouvez m'eclaircir sur ces obscurs erreurs je vous remercie d'avance
2 réponses
-
a mon avis, il suffit d'enlever les "reference" dans la declaration des operator dnas la class
ça donne :
Class reference{
...
int operator<(const reference &)
...
}
voila. a toi de dire si ça marche maintenant. -
je crois qu'il ne faut pas mettre le mot reference entre les accolades
dans le fichier hpp (là où on déclare les prototypes)
c'est à dire:
int reference operator ==(const reference &);
à remplacer par
class reference
{
int operator ==(const reference &);
int operator <=
etc...
etc...
}
j'ai pas le temps de vérifier mais avec c++ builder
je crois que ça le fait
a+