テンプレート クラスのメンバー関数
メンバー関数はクラス テンプレートの内側でも外側でも定義できます。 クラス テンプレートの外側で定義されている場合は、関数テンプレートと同様に定義されます。
使用例
// 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()
{
}
テンプレート クラス メンバー関数と同様、クラスのコンストラクター メンバー関数の定義には、テンプレート引数リストが 2 回含まれることに注意してください。
メンバー関数は、それ自体で関数テンプレートになり、次の例のように、追加パラメーターを指定します。
// 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()
{
}