Funções de membro das Classes de modelo
Funções de membro podem ser definidas dentro ou fora de um modelo de classe.Eles são definidos como modelos de função, se definido fora do modelo de classe.
Exemplo
// 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()
{
}
Observe que, à assim como acontece com qualquer função de membro de classe de modelo, a definição da função de membro do construtor da classe inclui a lista de argumentos de modelo duas vezes.
Funções de membro, si podem ser modelos de função, especificando os parâmetros adicionais, como no exemplo a seguir.
// 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()
{
}