기본 템플릿 인자
함수에서 기본인자값을 정해주는것과 비슷하게 템플릿의 데이터형도
디폴트로 미리 정의해 줄 수 있다.
이를 기본 템플릿 인자라고 한다.
그리고 언제나 ">"을 쓸때는 ">>" 을 주의해야 한다.
괄호가 두개 겹쳐있는것이 잘못하여 시프트연산자로 인식될 수도 있기 때문이다.
#include <vector>
#include <stdexcept>
template <typename T, typename CONT = std::vector<T> >
class Stack
{
private:
CONT vecElem;
public:
void push(T const&);
void pop();
T top() const;
bool empty() const
{
return vecElem.empty();
}
};
// 두개의 템플릿 파라미터를 가지므로 멤버함수정의시 모두 명시
template <typename T, typename CONT>
void Stack<T, CONT>::push(T const& elem)
{
vecElem.push_back(elem);
}
template <typename T, typename CONT>
void Stack<T, CONT>::pop()
{
if(vecElem.empty())
throw std::out_of_range("Stack pop");
vecElem.pop_back();
}
template <typename T, typename CONT>
T Stack<T, CONT>::top() const
{
if(vecElem.empty())
throw std::out_of_range("Stack pop");
return vecElem.back();
}
'Study > Template' 카테고리의 다른 글
템플릿 템플릿 파라미터 (0) | 2010.06.30 |
---|---|
데이터형이 아닌 클래스 템플릿 파라미터 (2) | 2010.06.25 |
클래스 템플릿 특수화 (0) | 2010.06.24 |
클래스 템플릿 (0) | 2010.06.18 |
오버로딩 (함수 템플릿) (0) | 2010.06.17 |