Bonsoir ,
J'ai un problème de compilation à cause de surcharges d'opérateurs.
J'ai une class qui s'appelle 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 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 }
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
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; }
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
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; }
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 !
Partager