C++-Programmierung: Template-Klassen

Aus Wikibooks
Alte Seite
Diese Seite gehört zum alten Teil des Buches und wird nicht mehr gewartet. Die Inhalte sollen in das neue Buch einfließen: C++-Programmierung/ Inhaltsverzeichnis.
Eine aktuelle Seite zum gleichen Thema ist unter C++-Programmierung/ Im Zusammenhang mit Klassen verfügbar.

Template-Klassen bieten, analog zu Template-Funktionen, die Möglichkeit, Klassen mit unterschiedlichen Datentypen zu verwenden. Templates werden vor allem bei Container-Klassen verwendet. Dies sind Klassen, die Instanzen anderer Klassen aufnehmen, z.B. Listen, Stacks, Queues.

Als Beispiel soll ein (ziemlich sinnfreies) Template-Array dienen:

template <typename T, int Groesse>
class Array
{
  private:
    T objekte[Groesse];
   
  public:
    Array();
    T &getObjekt(int Index);
    void setObjekt(const T &Objekt, int Index);
};

Die Funktion getObjekt() ließe sich z.B. so implementieren:

template <typename T, int Groesse>
T &Array<T, Groesse>::getObjekt(int Index)
{
  return objekte[Index];
}

Eine Instanz der Klasse Array, mit konkretem Datentyp int und Größe 10, erstellen Sie wie folgt:

Array<int,10> meinArray;

Überladen von Funktionen[Bearbeiten]

Auch bei Template-Klassen können einzelne Funktionen überladen werden. Dazu wird die Funktion einfach noch einmal implementiert, jedoch steht dann anstelle des formalen Datentyps der gewünschte konkrete Datentyp:

template <int>
int &Array<int>::getObjekt(int Index)
{
  // andere Implementierung;
}