2012-10-13 100 views
1

我正在学习如何制作模板类,我遵循这个概念,但遇到了错误。我有一个班,我变成了一个模板,但我得到以下错误;模板类错误C++

simplestack.h(24):错误C2955: '的SimpleStack':使用类模板需要模板参数列表

simplestack.h(9):看 '的SimpleStack'

simplestack.h声明(28):错误C2244: '的SimpleStack ::推':无法定义的功能匹配到一个现有的声明

simplestack.h(12):看的声明 '的SimpleStack ::推'

这是我的代码:

const int MAX_SIZE = 100; 
template <typename T> 
class SimpleStack 
{ 
public: 
    SimpleStack(); 
    SimpleStack & push(T value); 
    T pop(); 

private: 
    T items[MAX_SIZE]; 
    T top; 
}; 
template <typename T> 
SimpleStack<T>::SimpleStack() : top(-1) 
{} 

template <typename T> 
SimpleStack &SimpleStack<T>::push(T value) 
{ 
    items[++top] = value; 
    return *this; 
} 

template <typename T> 
T SimpleStack<T>::pop() 
{ 
    return items[top--]; 
} 

注意:每当我尝试机会MAX_SIZE到T它不会接受它。感谢您的任何帮助。

回答

4

方法push应该返回SimpleStack<T>&而不是SimpleStack&

+0

在成员函数的定义中。在声明中,由于注入类名称并不重要。 – bames53