Bonjour, j'ai un problème avec les surcharges d'opérateurs.
J'ai une classe vecteur:
puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class vecteur { private: int taille ; float *tab ; public: vecteur() ; vecteur(int); vecteur(vecteur&); ~vecteur(); ... }
lorsque je teste :
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 vecteur& vecteur::operator=(vecteur& v) { if (this!=&v){ if(tab!=NULL) delete []tab; if (taille!=0){ taille=v.taille; tab=new float[taille]; for(int i=0;i<taille;i++) tab[i]=v.tab[i]; }else tab=NULL; } return *this; } vecteur vecteur::operator+(vecteur& v) { vecteur z(*this); for(int i=0;(i<taille)&&(i<v.taille);i++) z.tab[i]+=v.tab[i]; return z; }
le compilateur me dit no match for 'operator=' in 'v3 = vecteur::operator+(vecteur&)(((vecteur&)(&v2)))'
Code : Sélectionner tout - Visualiser dans une fenêtre à part v3=v1+v2
c'est pareil avec v3=v1*v2, par contre si je fais v2=v1 ça marche très bien
Merci de votre aide !
Partager