C++-Programmierung: Template-Klassen

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Symbol opinion vote.svg
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;
}


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