Probleme de redefinition d'operator en C++

Bonjour je developpe un projet en C++ et j'ai besoin de redefinir les operateurs de comparaisons
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

  1. 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.
    0
    1. 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+
      0
      1. c'est exactement, ce que j'ai dit, mais en plus clair ;-)
        0