Bonsoir ,

J'ai un problème de compilation à cause de surcharges d'opérateurs.

J'ai une class qui s'appelle Eleve

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class Eleve
{
      private:
                 char *nom;
                 int numero;
      public:
                 des constructeurs...
 
              const Eleve & operator = (const Eleve &);  //Entre deux Eleve
              const char* & operator = (const Eleve &); //Entre char* et Eleve
}
Voilà le code des deux fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
//Concerne deux Eleves
const Eleve & Eleve ::operator = (const Eleve  &e)
{
	if (this != &e)
	{
		this->nom = strdup(e.nom);
                rhis->numero = e.numero;
	}
	return *this;
}
 
//cette fonction concerne une variable char* avec Eleve
const char* & Eleve ::operator = (const Eleve &e)
{
	return e.nom;
}
Dans mon main, j'aimerai effectuer ces deux opérations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
int main()
{
    Eleve E1("Patrick",1);   //ici pas de problème
    Eleve E2;                      //ici pas de problème
    string nom;
 
    E2 = E1;                //1er surcharge d'opérateur =
 
    nom = E2;             // 2ème surcharge d'opérateur =, ici je voudrai affecter le nom de E2 à la variable "nom" !!
return 0;
}
Avec la compilation ça ne marche pas, voilà l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Erreur	1	error C2556: 'const char *&Eleve::operator =(const Eleve &)' : la fonction surchargée ne diffère que par le type de retour de 'const Eleve &Eleve::operator =(const Eleve &)'	c:\users\sean\desktop\exam c++\exam\exam\eleve.h	23
Erreur	3	error C2556: 'const char *&Eleve::operator =(const Eleve &)' : la fonction surchargée ne diffère que par le type de retour de 'const Eleve &Eleve::operator =(const Eleve &)'	c:\users\sean\desktop\exam c++\exam\exam\eleve.cpp	34
Erreur	2	error C2373: 'Eleve::operator =' : redéfinition ; modificateurs de type différents	c:\users\sean\desktop\exam c++\exam\exam\eleve.h	23
Erreur	4	error C2373: 'Eleve::operator =' : redéfinition ; modificateurs de type différents	c:\users\sean\desktop\exam c++\exam\exam\eleve.cpp	34
Erreur	5	error C2084: la fonction 'const Eleve &Eleve::operator =(const Eleve &)' a déjà un corps	c:\users\sean\desktop\exam c++\exam\exam\eleve.cpp	34

Merci de m'aider. si mon code est illisible, je voudrai simplement savoir comment implementer deux surcharges d'opérateurs (=) en meme temps en:
1) le premier avec deux classes.
2) le deuxième avec deux type différents (comme le cas de Nom=E1)

merci !