Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.04.2006, 17:29

Templates

Hi leutz,

kann mir irgend jemand der C++ kann (nicht so wie ich ;) )
den gefallen tun und mir versuchen zu erklären was Templates sind.
In c++ in 21 Tagen ist die erklärung dazu wenn man noch nie was davon gehört hat recht dürftig.
Bitte tu mir jemand den Gefallen

TheProgrammer

Sheddex

unregistriert

2

06.04.2006, 17:54

Templates sind sozusagen "Datentypen" die als Schablone für "echte" Datentypen stehen. Man kann beispielsweise eine eine Template-Funktion schreiben die eine simple Berechnung durchführt. Brauch man diese Berechnung nun für mehrere Datentypen, z.B. für einen int und einen float, so muss man die Funktion nicht zweimal schreiben (für jeden Datentyp einmal).

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>

template <class T>
T Berechnung (T Zahl1, T Zahl2)
{
     T Ergebnis;
     Ergebnis = Zahl1 + Zahl2;
     return Ergebnis;
}

int main ()
{
     int WertA = 1;
     int WertB = 5;
     int Ergebnis = 0;

     Ergebnis = Berechnung (WertA, WertB);

     std::cout << "Ergebnis: " << Ergebnis << std::endl;
     return 0;
}


Wenn man hier jetzt einen float berechnen will muss man einfach float statt int benutzen.

3

06.04.2006, 17:56

danke jetzt hab ichs verstanden.
Ist eigentlich gar nicht schwer ;-)

thx

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

4

06.04.2006, 18:15

Eine mögliche Falle:
ersetzt man

C-/C++-Quelltext

1
2
3
4
5
     int WertA = 1;
     int WertB = 5;
     int Ergebnis = 0;

     Ergebnis = Berechnung (WertA, WertB); 

durch

C-/C++-Quelltext

1
2
3
4
5
     int WertA = 1;
     float WertB = 5;
     int Ergebnis = 0;

     Ergebnis = Berechnung (WertA, WertB); 

erhält man einen Fehler, da der Typ von WertA und WertB der gleiche sein muss, um den Templatetyp eindeutig zu identifizieren.
Verwendet man stattdessen

C-/C++-Quelltext

1
2
3
4
5
     int WertA = 1;
     float WertB = 5;
     int Ergebnis = 0;

     Ergebnis = Berechnung<float> (WertA, WertB); 

dann wird der Typ von T festgelegt und unabhängig vom Typ der Parameter verwendet.

5

06.04.2006, 18:25

hab ich nicht gewusst auch dir danke ;-)

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

6

06.04.2006, 20:00

Theprogrammer

Sag mal ich kann mir gar nicht vorstellen dass diese "in 21 Tagen"-Reihe so schlecht ist. Also ich habe kein Buch aus dieser Reihe, aber man hört oft Gutes von. In einem guten Buch dürfte aber so ein Thema doch ausreiechend erklärt sein. ???
mfg
john

7

06.04.2006, 20:19

das Buch hat bei mir auch einen relativ guten eindruck hinterlassen
C++ ist nicht meine erste sprache.
Im verhältnis ist dieses Buch sehr gut.
Nur einzelne Themen werden mehr als notwendig behandelt und was überhaupt templates sind hatte der autor in 4Zeilen abgehackt und eine zeile wie man sie einsetzt und 2zeilen wofür sie gut sind!
Und dann halt ein Sample.
Ich hatte die funktionsweise so halb verstanden.
ABer überhaupt nicht kapiert hatte ich wofür die dinger gut sind.

Jetzt weiß ichs ;)

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

8

06.04.2006, 21:32

Zitat von »"Theprogrammer"«

Ich hatte die funktionsweise so halb verstanden.
ABer überhaupt nicht kapiert hatte ich wofür die dinger gut sind.

Jetzt weiß ichs ;)


Das ist schön (bzw. gut). ;)
mfg
john

Werbeanzeige