Membres des modèles de classe
Les membres des modèles de classe sont tout comme les membres d'une classe.Ils peuvent être des membres statiques ou non statique, de données ou de fonction, ou même d'autres modèles.Ils peuvent être définis dans la classe de modèle ou de l'extérieur de celui-ci.Les membres d'une classe de modèle peuvent faire référence aux types inconnus spécifiés dans la liste d'arguments template comme s'ils étaient des noms valides de type, et ils peuvent faire référence aux valeurs inconnues d'objet spécifiées dans la liste d'arguments template comme s'ils étaient des expressions constantes.
Lorsque des membres de classes avec modèles sont définis en dehors de la déclaration de classe, ils doivent être déclarées 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 que la fonction est membre de.
template < template-argument-list > definition
Notes
Le déclarateur pour une fonction membre à l'extérieur de la classe de modèle 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++ permet également les modèles imbriqués, appelés modèles de membres.Les modèles de membres peuvent être modèles de classe imbriqués ou modèles de fonction membre.