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

odc

Frischling

  • »odc« ist der Autor dieses Themas
  • Private Nachricht senden

1

08.10.2006, 20:07

Prinzipielle Frage zum Nutzen von Templates

Hallo community,

wieder einmal eine dumme Noob-Frage: Ich arbeite gerade an Kapitel 8, und frage mich an der Stelle über Templates und Singletons nach Sinn und Zweckmäßigkeit einer solchen Lösung. Wie im Text ja auch gesagt, kann man doch auch zumindest bei Funktionen durch ein Überladen gleiche Funktionen mittels derer Übergabeparameter unterscheiden.
Warum also den Stress, mit einem Template zu arbeiten?

Vielen Dank für jegliche Hilfe - es ist echt schwierig, Programmieren zu lernen, wenn man nicht wirklich durchsteigt und erst beim 27. Anlauf beginnt zu verstehen. Also sorry, falls meine Fragerei langsam nervt.

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

2

08.10.2006, 20:15

Nun Templates erstparen dir das überladen von Funktionen mit der selben Anzahl von Parametern ;)

Willst du lieber 3 Funktionen schreiben die einen int, double und float wert bekommen oder lieber eine Funktion mit 2 Templates?
Templates haben auch Vorteile ^^

Wenn du z.b. eine Additionsfunktion für Zahlen und Stringsbrauchst musst du diese nur einmal schreiben ;)

z.b.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
//Deklaration:

template <typename Temp>
Temp Addition(Temp, Temp);
 
//Implemenation:

template <typename Temp>
Temp Addition(Temp Temp_1, Temp Temp_2)
{
 return Temp_1+Temp_2;
}

Alternativ kann man auch void* benutzen ;)
Deklaration und Implementation von Templatefunktionen/Klassen müssen direkt in die Header =)

So kannst du für int, double, float und Strings eine Funktion nutzen ohne das du die selbe Funktion 3 mal Überladen musst ;)

Singletons sind dazu da um sachen wie z.b. einen Zeiger nur einmal zuhaben.

In der Spieleprogrammierung kann man nur eine Instanz einer Spieleengine haben ^^
Oder brauchst du 10 nur um alles zurendern?

Static bedeutet das diese Variable nur einmal deklariert wird und nachdem verlassen der Funktion o.ä wird der Wert gemerkt.

Dazu nutzt man Sungletons ;)
Coole sache und vermeidet Globale sachen =)
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

3

09.10.2006, 07:56

Hmm, Templates.

Irgendwann wirst du in der C++ Programmierung mal auf die Container-Klassen der C++ Standardbibliothek treffen und dann merken, wie nett sowas ist.

Wenn ich in C eine Liste machen will, muss ich entweder für jeden Typ eine eigenene Implementation bringen oder umständlich mit void* arbeiten und selbst auf die Typsicherheit achten.

Der Template Ansatz entbindet mich von dieser Arbeit, weil mit dem selben Listentemplate verschiedene Typen benutzt werden können und ich hinterher nicht selbst auf Typsicherheit achten muss. Z.B. kann ich also Listen std::list<float> und std::list<MyClass> einfach hinschreiben und muss selbst kein Stück programmieren. (Stimmt nicht ganz, denn die Objekte, die so gespeichert werden sollen, müssen meist ein paar Funktionen erfüllen, z.B. eine Zuweisung muss funktionieren.)

Ohne Templates wäre das nicht so einfach möglich. Templates hören eben nicht bei Parametern von Funktionen auf. Kernaussage des langen Textes da oben: mit Templates kann man gleichartige Klassen und Algorithmen implementieren, die in der Anwendung dann typsicher sind.

Was ich sonst noch sagen will: Singletons und Templates haben nichts miteinander zu tun, ausser dass man mit Templates leicht eine recycle-bare Singleton Implementation bauen kann, Sonst sind Singletons uninteressant und sollten nach Möglichkeit vermieden werden, auch wenn sie gerne mal hochgespielt werden.

MfG,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

odc

Frischling

  • »odc« ist der Autor dieses Themas
  • Private Nachricht senden

4

11.10.2006, 15:20

Hallo allerseits,

erstmal vielen Dank für eure Ausführungen - hat mir wirklich weitergeholfen und ich denke, ich steige so langsam aber sicher durch die "Templates" durch. In der Webprogrammierung versteht man halt was ähnliches und vom Konzept her doch völlig anderes unter Templates, das hat mich etwas verwirrt.

Danke nochmals. ;)

Werbeanzeige