2010-11-21 67 views
0
template <class T> 
class ListRemake 
{ 
    ... 
    friend ostream& operator << (ostream& out, const ListRemake& obj); 
}; 

template <class T> 
ostream& operator << (ostream& out, const ListRemake& obj) 
{ 
    for (int i = 0; i < obj.size; i++) 
     out << obj[i] << '\n'; 
    return out; 
} 

Donne l'erreur C2955: 'ListRemake': l'utilisation du modèle de classe nécessite une liste d'arguments de modèle.erreur C2955: 'ListRemake': l'utilisation du modèle de classe nécessite la liste d'arguments modèle

Répondre

0

Remplacer

ostream& operator << (ostream& out, const ListRemake& obj) 

avec

ostream& operator << (ostream& out, const ListRemake<T>& obj) 
+0

Je reçois une erreur de l'éditeur de liens: erreur non résolue: erreur erreur LNK2019: symbole externe non résolu "classe std :: basic_ostream > & __cdecl opérateur << (classe std :: basic_ostream > &, classe ListRemake const &) "(?? 6 @ YAAAV? $ basic_ostream @ DU? $ char_traits @ D @ std @@@ std @@ AAV01 @ ABV? $ ListRemake @ N @@ @Z) référencé dans la fonction _main –

+0

@icecrime Je viens de le faire, mais j'ai les mêmes erreurs. –

+0

@cable: Essayez-vous de séparer les déclarations et les définitions dans différents fichiers? Cela ne fonctionne pas avec les modèles. – fredoverflow

0

L'erreur vous indique que ListRemake est un modèle et que vous devez par conséquent l'instancier pour l'utiliser en tant que type (ce que vous faites dans l'opérateur <<).

+0

Je ne suis pas sûr que je comprends. Qu'est-ce que je fais de mal, que dois-je changer? –