错误 C2244:"堆栈:<T>:运算符=":无法将函数定义与现有声明匹配

error C2244:'Stack<T>::operator=': unable to match function definition to an existing declaration

本文关键字:函数 定义 声明 lt 堆栈 C2244 gt 错误 运算符      更新时间:2023-10-16
public:    
    Stack<T>&operator=(const Stack<int>& rlist);    
private:    
    int *top;    
template<class T>
Stack<T>& Stack<int>::operator=(const Stack<int>& rlist)    
{    
    if(this==&rlist)    
        return *this;    
    makeEmpty();    
    deepCopy(rlist);    
    return *this;    
}

我收到错误,说error C2244:'Stack<T>::operator=': unable to match function definition to an existing declaration,不知道在哪里修复....

出于某种奇怪的原因,您到处指定<int>。 所有这些都应该<T>.

Stack<T>&operator=(const Stack<int>& rlist);
//                            ^^^^^
Stack<T>& Stack<int>::operator=(const Stack<int>& rlist) 
//             ^^^^^                       ^^^^^

除非你真的试图专门研究何时T=int(如果是这样,那么你的语法是有缺陷的(,但基于赋值运算符的实现,我认为这不是你正在尝试的。