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;
}

在线List& List<T>::operator= (const List& other)我得到编译错误“预期的构造函数、析构函数或在'&'标记之前的类型转换”。我在这里做错了什么?

4

1 回答 1

3

List&没有模板参数就不能使用返回类型。它需要是List<T>&

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


但是请注意,即使您修复了这个语法错误,您也会遇到链接器问题,因为模板函数定义需要放在头文件中。请参阅为什么模板只能在头文件中实现?了解更多信息。

于 2012-04-16T12:03:51.703 回答