Member von Klassenvorlagen
Member von Klassenvorlagen verhalten sich genauso wie Member einer beliebigen Klasse. Sie können statisch oder nicht statisch, Daten- oder Funktionsmember oder sogar andere Vorlagen sein. Sie können entweder innerhalb der Vorlagenklasse oder außerhalb davon definiert sein. Die Member einer Vorlagenklasse können wie gültige Typnamen auf die unbekannten Typen verweisen, die in der Vorlagenargumentliste angegeben sind, und sie können wie konstante Ausdrücke auf die unbekannten Objektwerte in der Vorlagenargumentliste verweisen.
Wenn Member von auf Vorlagen basierenden Klassen außerhalb der Klassendeklaration definiert sind, müssen sie anders als die nicht auf Vorlagen basierenden Klassen deklariert werden. Der Deklaration muss Syntax vorangestellt sein, die die Vorlagenklasse angibt, deren Member die Funktion ist.
template < template-argument-list > definition
Hinweise
Der Deklarator für eine Memberfunktion außerhalb der Vorlagenklasse muss auch die Vorlagenargumente angeben.
template-name < template-argument-list > :: identifier
Beispiel
// 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++ lässt auch geschachtelte Vorlagen zu. Sie werden als Membervorlagen bezeichnet. Membervorlagen können Vorlagen der geschachtelten Klasse oder Memberfunktionsvorlagen sein.