错误C2244:&#39; Stack <t> :: operator =&#39;:无法将函数定义与现有声明匹配</t>

时间:2014-10-22 22:50:42

标签: c++

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并且不知道在哪里修复....

1 个答案:

答案 0 :(得分:2)

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

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

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

除非你实际上试图专注于T=int(如果是这样,那么你的语法有缺陷),但是基于赋值运算符的实现,我不认为这是你的&# #39;重新尝试。