2010-11-21 4 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; 
} 

Ошибка C2955: «ListRemake»: использование шаблона шаблона требует списка аргументов шаблона.ошибка C2955: «ListRemake»: использование шаблона шаблона требует списка аргументов шаблона

ответ

0

Заменить

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

с

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

Я получаю ошибку компоновщика: неразрешенная ошибка: Ошибка ошибка LNK2019: неразрешенный внешний символ "class std :: basic_ostream > & __cdecl operator << (класс std :: basic_ostream > &, класс ListRemake const &) "(?? 6 @ YAAAV? $ basic_ostream @ DU? $ char_traits @ D @ std @@@ std @@ AAV01 @ ABV? $ ListRemake @ N @@ @Z), на которые ссылается функция _main –

+0

@icecrime Я просто сделал, но получаю те же ошибки. –

+0

@cable: Вы пытаетесь отделить декларации и определения в разных файлах? Это не работает с шаблонами. – fredoverflow

0

Ошибка сообщает вам, что ListRemake является шаблоном и поэтому вам нужно создать экземпляр, чтобы использовать его в качестве типа (что вы делаете в операторе <<).

+0

Я не уверен, я понимаю. Что я делаю неправильно, что я должен изменить? –

Смежные вопросы