Fonctions membres des classes de modèle
Les fonctions membres peuvent être définies à l'intérieur ou à l'extérieur d'un modèle de classe. Elles sont définies comme des modèles de fonctions si elles sont définies à l'extérieur du modèle de classe.
Exemple
// 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()
{
}
Notez que comme avec n'importe quelle fonction membre de classe de modèle, la définition de la fonction membre de constructeur de la classe inclut deux fois la liste d'arguments template.
Les fonctions membres peuvent elles-mêmes être des modèles de fonction, spécifiant des paramètres supplémentaires, comme dans l'exemple suivant.
// 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()
{
}