템플릿 클래스의 멤버 함수
내부 또는 외부에 클래스 템플릿 멤버 함수를 정의할 수 있습니다.외부 클래스 템플릿을 정의 하는 경우 함수 템플릿과 마찬가지로 정의 됩니다.
예제
// member_function_templates1.cpp
template<class T, int i> class MyStack
{
T* pStack;
T StackBuffer[i];
static const int cItems = i * sizeof(T);
public:
MyStack( void );
void push( const T item );
T& pop( void );
};
template< class T, int i > MyStack< T, i >::MyStack( void )
{
};
template< class T, int i > void MyStack< T, i >::push( const T item )
{
};
template< class T, int i > T& MyStack< T, i >::pop( void )
{
};
int main()
{
}
Note와 템플릿 클래스 멤버 함수 처럼, 정의 클래스의 생성자 멤버 함수를 템플릿 인수 목록이 두 번 포함 됩니다.
멤버 함수 자체가 함수 템플릿, 추가 매개 변수를 다음과 같이 지정 될 수 있습니다.
// member_templates.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u);
};
template<typename T> template <typename U>
void X<T>::mf(const U &u)
{
}
int main()
{
}