Probleme de redefinition d'operator en C++

raoul31 Messages postés 2 Statut Membre -  
 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 :

#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. Char Snipeur
     
    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
  2. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    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. char snipeur
       
      c'est exactement, ce que j'ai dit, mais en plus clair ;-)
      0