类模板,期望构造函数,析构函数

时间:2012-04-16 11:57:44

标签: c++ class templates constructor

好的,所以这是我的头文件(或者至少是其中的一部分):

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;
}
在行List& List<T>::operator= (const List& other)上的

我收到编译错误“预期的构造函数,析构函数或'&amp;'之前的类型转换令牌”。我在这里做错了什么?

1 个答案:

答案 0 :(得分: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?