Bonjour, j'ai un problème avec les surcharges d'opérateurs.

J'ai une classe vecteur:

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();
...
}
puis :

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;
}
lorsque je teste :

le compilateur me dit no match for 'operator=' in 'v3 = vecteur::operator+(vecteur&)(((vecteur&)(&v2)))'

c'est pareil avec v3=v1*v2, par contre si je fais v2=v1 ça marche très bien

Merci de votre aide !