Bonjour,

je suis en train de refaire la classe vector de la STL (le prétentieux, non c'est juste pour pas perdre la main, pas la perdre plus en tout cas).

La j'ai un petit souci, j'ai codé ca :
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
 
   template < class T >
   Vector< T > Vector< T >::operator+( Vector< T > &right){
        Vector< T > vec ;
        vec.lst = lst;
 
        vec.lst.insert( vec.lst.end(), right.lst.begin(), right.lst.end() );
 
        return vec;
   }
 
   template < class T >
   Vector< T >& Vector< T >::operator=(Vector< T > &right){
        lst.clear();
 
        lst.insert( lst.begin(), right.lst.begin(), right.lst.end() );
 
        return *this;
   }
Ces deux methodes sont declaré comme ca dans le corps e la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Vector operator+(Vector &right);
Vector& operator=(Vector &right);
dans mon mon de test des fois ca compil pas (ca c'est normal), mais je ne comprends pas et j aime pas trop

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
 
//En haut du main
//Pour que l'appel soit plus sympa
//D'ailleur au passage si vous connaiisez mieux que ca ;)
#define IntVecteur Vecteur<int>
 
int main( char** argc, int argv ){
   IntVecteur v1;
   IntVecteur v2;
   IntVecteur v3;
 
   //Je leur met quelques valeurs de test
   //...
 
   v3 = v1          // Ca ca marche
   V1 + v2          // Ca ca marche aussi
   v3 = v1 + v2   // La ca coince
}
et la on me dit :
Citation Envoyé par c++ de NetBSD
error: no match for 'operator=' in 'autre =
Vector<T>::operator+(Vector<T>&) [with T = int]((&v))'
IntVector.h:138: error: candidates are: Vector<T>&
Vector<T>::operator=(Vector<T>&) [with T = int]
je ne comprends pas si vous pouviez me donner une explication