bonsoir
voila je suis entrain de concevoir une classe
et le compilateur me sort ceci a j'arrive pas a voir d'ou viens le problème
si quelqu'un pouvait m'aider merci d'avance
chaine.cpp in function `Chaine operator+(const Chaine&, const Chaine&)':
chaine.cpp non-lvalue in assignment
chaine.cpp In function `int main()':
chaine.cpp no match for 'operator=' in 'c = operator+(const Chaine&, const Chaine&)(((const Chaine&)((const Chaine*)(&b))))'
chaine.cpp:69 candidates are: Chaine& Chaine::operator=(Chaine&)
voici la déclaration de ma classe:
les 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
18
19
20
21
22
23
24
25 class Chaine { public: Chaine(); //initialise une chaine vide Chaine(const char* txt); //initialise avec la chaine passée en paramètre Chaine(int n); ~Chaine(); void affiche(); Chaine& operator=(Chaine& ch); int operator==(Chaine ch); friend Chaine operator+(const Chaine &ch1,const Chaine &ch2); char operator[](int i)const; int longeur() const { return lenght; } private: int lenght; //longeur de la chaine char* chaineCar; //la chaine allouée dynamiquement };
test de main:
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Chaine& Chaine::operator=(Chaine& ch) { if(this != &ch) //test autoaffection { chaineCar = ch.chaineCar; lenght = ch.lenght; } return *this; } //------------------------------------------------- Chaine operator+(const Chaine &ch1,const Chaine &ch2) { Chaine ch3(ch1.longeur() + ch2.longeur()); int i,j; i = j = 0; while(i < ch1.longeur()) { ch3[i] = ch1[i]; ++i; } while(j < ch2.longeur()) { ch3[i++] = ch2[j++]; } return ch3; } char Chaine::operator[] (int i) const { if(i > lenght) { cerr << "Debordement" << endl; } return chaineCar[i]; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int main() { c = a+b; cout << "c: "; c.affiche(); }
Partager