Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

24.5.2 Primitivtypen als Templateparameter

24.5.2 Primitivtypen als Templateparameter

Bisher hatte ich nur erwähnt, dass es möglich ist, den Templates Typen zu übergeben, welche dann innerhalb des Templates generisch verwendet werden können. Man kann aber auch einfach Werte übergeben. Sie haben dann eine ähnliche Wirkung wie Konstanten. Im folgenden Beispiel erstelle ich ein Template zum erzeugen eines Arrays mit einem generischen Datentyp und gewünschter Größe.

 1
 2
 3
 4
 5
 6
 7
 8
 9
					
// Erzeugt ein generisches Array //////////////////////////////////////////////
template<typename TArrayType = int, unsigned int TSize = 16>
TArrayType* Create() {
	return new TArrayType[TSize];
} // Create ///////////////////////////////////////////////////////////////////

// ...

int* aList = Create<>();	// Erzeugt ein Array mit 10 Integern
					

Wie Sie sehr schön erkennen können kann man auch für diese Primitivtypen Standardwerte festlegen und somit einen sehr kurzen Ausdruck für das Erzeugen des Arrays verwenden. Zugegeben, dieses Beispiel macht nicht viel Sinn. Zum einen braucht man das Erzeugen nicht in ein Template zu verpacken und dann könnte man der Funktion auch die Größe als Parameter übergeben. Anders sieht es da aber schon aus, wenn man ein statisches Array erzeugen wollte. In dem Fall benötigt man einen konstanten Wert, der schon zur Compilezeit feststeht. Genau dies erreicht man mit dieser Art Templateparametern. Wichtig ist bei diesem Szenario, dass man im Aufruf der Templatefunktion auch einen konstanten Wert benutzt.

Natürlich funktioniert dieser Mechanismus auch bei Templateklassen und in der Tat macht er auch bei jenen mehr Sinn (z.B. für die Implementierung einer Vektorklasse).

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012