Surcharge d'opérateurs, un conflit !
Bonsoir :mrgreen:,
J'ai un problème de compilation à cause de surcharges d'opérateurs.
J'ai une class qui s'appelle Eleve
Code:
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:
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:
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:
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:mrgreen:. 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 !