好的,所以这是我的头文件(或者至少是其中的一部分):
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;'之前的类型转换令牌”。我在这里做错了什么?
答案 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?。