Klassentemplates

Definition eines Klassentemplates (1/4)

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;  // Vorausdeklaration 

template <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.