C++-Programmierung: Template-Klassen

Aus Wikibooks

Wechseln zu: Navigation, Suche

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;

[Bearbeiten] Überladen von Funktionen

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;
}


Wikibooks buchseite.svg Zurück zu Statische Elemente in Klassen | One wikibook.svg Hoch zu Inhaltsverzeichnis | Wikibooks buchseite.svg Vor zu Operator-Überladung
Persönliche Werkzeuge