[template] renommé (presque) et warning
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:
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:
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:
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