2012-04-16 3 views
1

нормально, так вот мой файл заголовка (или по крайней мере его часть):шаблон класса, ожидаемый конструктор, деструктор

template<class T> 

class List 
{ 
public: 
. 
: 
List& operator= (const List& other); 
. 
: 
private: 
. 
: 
}; 

и вот мой .cc файл:

template <class T> 
List& List<T>::operator= (const List& other) 
{ 
    if(this != &other) 
    { 
     List_Node * n = List::copy(other.head_); 
     delete [] head_; 
     head_ = n; 
    } 
    return *this; 
} 

на line List& List<T>::operator= (const List& other) Я получаю ошибку компиляции «Ожидаемый конструктор, деструктор или преобразование типа до« & «токен». Что я здесь делаю неправильно?

+0

Определение класса шаблона должно быть в файле заголовка. Взгляните на этот вопрос для объяснения: http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file –

ответ

3

Обратный тип List& не может использоваться без аргументов шаблона. Это должно быть List<T>&.

template <class T> 
List<T>& List<T>::operator= (const List& other) 
{ 
    ... 
} 


Но обратите внимание, что даже после того, как вы исправить эту ошибку синтаксиса, вы будете иметь проблемы с компоновщика, так как определение функции шаблона должны быть размещены в файле заголовка. См. Why can templates only be implemented in the header file? для получения дополнительной информации.

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