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
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
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);
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 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; }
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; }
Partager