Probleme de redefinition d'operator en C++

Fermé
raoul31 Messages postés 2 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 18 janvier 2004 - 17 janv. 2004 à 20:48
 char snipeur - 23 avril 2004 à 23:41
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

Char Snipeur
22 avril 2004 à 17:27
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
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
22 avril 2004 à 20:05
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
char snipeur
23 avril 2004 à 23:41
c'est exactement, ce que j'ai dit, mais en plus clair ;-)
0