Bonjour à tous,

J'ai réaliser un programme qui recréer plus ou moins les éléments de la classe vecteur.
La plupart des opérations marches bien néanmoins quand je surchage l'opérateur=, le compilo(je suis sur linux) me dit :

error: no match for ‘operator=’ in ‘v3 = vecteur::operator+(vecteur&)(((vecteur&)(& v2)))’
Vecteur.h:51: note: candidates are: vecteur& vecteur::operator=(vecteur&)
Vecteur.h:52: note: vecteur& vecteur::operator=(int)

Je le comprends de la façon suivante en gros il n'arrive pas à trouver l'opérateur égale. Il y a 2 candidats pour celui ci mais il ne sait lequel choisir. Or je ne comprends pas puisque je viens de le definir.

Voici mes fichiers sources :
Vecteur.h
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
 
class vecteur
 
{
 
private:
 
    int taille;
 
    int* tab;
 
 
 
public:
 
    vecteur();//constructeur par défaut
    ~vecteur();//destructeur
    vecteur(int);// Constructeurs avec la taille du vect.(int)
 
    // Constructeurs par copie(vecteur&)
    vecteur(vecteur&); 
 
    // Acces a la taille du vecteur
    int Taille();
 
    //affichage du vecteur
    //void affichage();
    void affiche();
 
    // acces au element []
    int& operator[](int i);//accès au éléments
 
 
 
    // affectation : =(vecteur),
    vecteur& operator=(vecteur&);
    vecteur& operator=(int);
 
 
 
    // incrementation/decr. : ++(void), ++(int), --(void)
    vecteur& operator++(int);
    vecteur& operator--(int);
 
    // op. binaires : +(vecteur&), -
    vecteur operator+(vecteur&);
    vecteur operator-(vecteur&);
 
    // auto-adition : +=(vecteur&), -=
    vecteur& operator+=(vecteur&);
    vecteur& operator-=(vecteur&);
 
    // op. booleens : ==(vecteur&), <, >, <=, >=
    bool   operator==(vecteur&);
 
    bool  operator!=(vecteur&);
    bool  operator<(vecteur&);
    bool  operator>(vecteur&);
    bool  operator<=(vecteur&);
    bool  operator>=(vecteur&);
 
    // produit scalaire: *(vecteur&)
    int operator*(vecteur&);
 
    //produit par un scalaire
    vecteur operator*( int);
Vecteur.cc
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
 
vecteur& vecteur::operator=(vecteur& copie)
{
    if(tab!=NULL)
       free(tab);
 
    taille=copie.Taille();
    tab=(int*)malloc(taille*sizeof(int*));
    for(int i=0;i<taille;i++)
        tab[i]=copie.tab[i];
 
    return *this;
}
 
vecteur vecteur::operator+(vecteur& vect)
 
{
	vecteur somme(*this);
	return somme+=vect;
 
}
 
 
vecteur& vecteur::operator+=(vecteur& vect)
 
 {
 
    for(int i=0;i<vect.Taille();i++)
 
        tab[i]+=vect.tab[i];
 
 
 
    return *this;
 
 }
client.cc
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
41
42
43
44
45
46
47
48
49
50
51
52
 
 
 
#include <iostream.h>
 
 
 
// Include de l'application
 
#include "Vecteur.h"
 
 
int main(int argc, char **argv)
 
{
 
        cout << "PROGRAMME DE TEST" << endl;
 
 
        // Constructeurs
 
        vecteur v1(3);
	vecteur v2(4);
	vecteur v3;
 
	int taille_v1=v1.Taille();
 
 
        v1[0] = 2;
 
        v1[1] = 4;
 
        v1[2] = 6;
	v1++;
	v1--;	
	v2=1;
	v1+=v2;
 
	cout<<"v2  "<<endl;
	v2.affiche();
 
	if(v1==v2)
		cout<<"v1==v2"<<endl;
	else
		cout<<"v1!=v2"<<endl;
 
	v3=v1+v2;//le pb est ici
	v3.affiche();
 
        cout << "SORTIE TEST" << endl;
 
}