Erst einmal alles Gute dem Forum zum Neuen Jahr!!
So jetzt meine Frage:
Zum Thema im Kapiel 8.3.2 Template Klassen:
Ersteinmal lassen sich beide Quelltexte von meinem Compiler übersetzen und beide funktionieren auch so wie sie sollen.
Mir leuchtet ja auch ein das die 2. Alternative (Listing 8.5) wesentlich besser ist als (Listing 8.4), da man ja selten seine Klassen in eine Datei schreibt in der auch die main() Funktion ist.
Also ist die Idee die Template Klasse über eine Header-Datei einzubinden nicht schlecht. (Auch wenn die Funktionsdefinition nicht in seperater cpp-Datei ist)
Jetzt fällt mir aber (als C++ Laie) auf, dass beim einbinden von #include "Raumschiff.h"
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
int main()
{
CRaumschiff<int> Spieler;
Spieler.Setze_Geschwindigkeit(1500); //wurde leider manuell geschrieben
Spieler.Zeige_Daten(); //hier auch
return 0;
}
|
ich in der main() nicht mehr die Möglichkeiten habe mit dem Punkt Operator z.B. Spieler.Zeige_Daten() auf die vom Compiler vorgeschlagenen Funktion zuzugreifen.
Also ich schreibe Spieler. (punkt) und dann zeigt die Entwicklungsumgebung mir keine Vorschläge mehr an.
Woran liegt das??
Das ist doch sehr schade wenn man diese Funktions-Vorschläge nicht mehr sieht. Dann muss man ja ständig nach schauen was die Template-Klasse in der Header Datei alles so kann und vertippt sich wahrscheinlich noch.
Muss ich was an der Compiler Einstellung ändern. Ich benutzte VC++ 6.0 von der Buch CD!
Oder liegt das daran das die Funktionsdefinitionen mit in der Header Datei sind?
Vielleicht hat ja einer mal das Buch vom Heiko und kennt mein Problem.
Mit bestem Gruß
Jens