2012-10-13 4 views
1

템플릿 클래스를 만드는 방법을 배우고 있으며 개념을 따르지 만 오류가 발생합니다. 나는 템플릿으로 바뀌었지만 다음과 같은 에러가 발생했다.템플릿 클래스 오류 C++

simplestack.h (24) : 오류 C2955 : 'SimpleStack는': 'SimpleStack'

simplestack.h의 참조 선언 : 클래스 템플릿의 사용은 템플릿 인수 목록을

simplestack.h (9)가 필요합니다 (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

pushSimpleStack<T>&이 아니라 SimpleStack&을 반환해야합니다.

+0

멤버 함수의 정의에서. 클래스 이름을 삽입하기 때문에 선언문에서 문제가되지 않습니다. – bames53