Rechercher : dans
Par :

Probleme de redefinition d'operator en C++

Dernière réponse le 23 avr 2004 à 23:41:06 raoul31, le 17 jan 2004 à 20:48:00 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Probleme de redefinition d'operator en C++ » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

Char Snipeur, le 22 avr 2004 à 17:27:34

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.

Répondre à Char Snipeur

2

blurk, le 22 avr 2004 à 20:05:51

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+

Répondre à blurk

3

 char snipeur, le 23 avr 2004 à 23:41:06

C'est exactement, ce que j'ai dit, mais en plus clair ;-)

Répondre à char snipeur