Ein Klassentemplate wird analog zu einem Funktionstemplate durch voranstellen
des Schlüsselwortes template
und einer anschließenden Bezeichnerliste
gefolgt von der eigentlichen Klassendeklaration deklariert.
Für die Deklaration der Klasse Listenelement
ergäbe sich dann:
template <class T> class Liste; // Vorausdeklarationtemplate <class T> class Listenelement { friend class Liste<T>; // Die Listenklasse soll Zugriff haben public: Listenelement(T K, Listenelement* l = 0) : k(K), next(l) {}; ~Listenelement() { delete next;} private: // sonst darf niemand Listenelemente verändern T k; // Der eigentliche Datensatz Listenelement* next; // Zeiger auf nächstes Element };
Wie bei Funktionstemplates folgt auf die Templatedefinition eine Klassendeklaration. Die Gültigkeit des Alias beschränkt sich auch auf diese.
Die friend
-Deklaration greift schon der Syntax von Objektdeklarationen
voraus. Dazu später mehr. Die Methoden wurden alle implizit inline
definiert.