Membres pour les modèles de classe
Les membres des modèles de classe sont comme les membres d'une classe. Ils peuvent être des membres statiques ou non statiques, de données ou de fonctions, ou même d'autres modèles. Ils peuvent être définis dans la classe de modèle ou en dehors de celle-ci. Les membres d'une classe de modèles peuvent faire référence aux types inconnus spécifiés dans la liste d'arguments template comme s'il s'agissait de noms de type valides, et ils peuvent faire référence aux valeurs inconnues d'objet spécifiées dans la liste d'arguments template comme s'il s'agissait d'expressions constantes.
Lorsque les membres des classes basées sur un modèle sont définis hors de la déclaration de classe, ils doivent être déclarés différemment de ceux des classes non basées sur des modèles. La déclaration doit être précédée par la syntaxe spécifiant la classe de modèle dont la fonction est membre.
template < template-argument-list > definition
Notes
Le déclarateur pour une fonction membre à l'extérieur de la classe de modèles doit également spécifier des arguments template.
template-name < template-argument-list > :: identifier
Exemple
// members_of_class_templates1.cpp
// compile with: /c
template <class T, int i>
class TempClass {
int MemberSet(T, int);
};
template <class T, int i>
int TempClass< T, i >::MemberSet( T a, int b ) {
if( ( b >= 0 ) && (b < i) ) {
Tarray[b++] = a;
return sizeof( a );
}
else
return -1;
}
C++ autorise également les modèles imbriqués, appelés modèles membres. Les modèles membres peuvent être des modèles de classe imbriqués ou des modèles de fonction membre.