C++ Probleme mit Templates

Ahoi, habe ein Problem, als Vorbereitung für eine Klausur will ich folgende Aufgabe bearbeiten. Wenn ich allerdings meinen Code kompilen will kommen folgende Fehler, weiß da jemand Rat ? Quellcode ist angehängt.

Compiler: Default compiler
Führt g++.exe... aus
g++.exe "C:\Dokumente und Einstellungen\Valentin\Eigene Dateien\Uni\INFO\C++\Vorbereitung\Vektor.cpp" -o "C:\Dokumente und Einstellungen\Valentin\Eigene Dateien\Uni\INFO\C++\Vorbereitung\Vektor.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:23: warning: friend
declaration `std::istream& operator>>(std::istream&, const Vektor<T>&)'
declares a non-template function

C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:23: warning: (if
this is not what you intended, make sure the function template has already
been declared and add <> after the function name here)
-Wno-non-template-friend disables this warning
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:24: warning: friend
declaration `std::ostream& operator<<(std::ostream&, const Vektor<T>&)'
declares a non-template function

C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: syntax
error before `<' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: `
T' was not declared in this scope
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: template
argument 1 is invalid
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: syntax
error before `&' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: ISO
C++ forbids declaration of `operator+' with no type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: `
int operator+(...)' must have an argument of class or enumerated type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:68: error: `
int operator+(...)' must take either one or two arguments
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: In

function `int operator+(...)':
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:70: error: `
Vektor' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:70: error: (Each
undeclared identifier is reported only once for each function it appears
in.)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:70: error: syntax
error before `(' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:72: error: `
n' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:74: error: `
C' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:74: error: `
komp' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:74: error: `
B' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: At
global scope:
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:81: error: syntax
error before `<' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:81: error: `
T' was not declared in this scope
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:81: error: syntax
error before `::' token

C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:85: error: syntax
error before `;' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:85: error: syntax
error before `++' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:94: error: syntax
error before `::' token

C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:94: error: syntax
error before `)' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:94: error: ISO
C++ forbids declaration of `operator*' with no type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:94: error: `
int operator*(...)' must have an argument of class or enumerated type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:94: error: `
int operator*(...)' must take either one or two arguments
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: In
function `int operator*(...)':
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:103: warning: return

to `int' from `double'
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:103: warning: argument

to `int' from `double'
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: At
global scope:
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:106: error: syntax
error before `&' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:106: error: `
T' was not declared in this scope
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:106: error: syntax
error before `::' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:109: error: syntax
error before `;' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:109: error: syntax
error before `++' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:117: error: syntax
error before `&' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:117: error: `
std::istream& operator>>(...)' must have an argument of class or enumerated
type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:117: error: `
std::istream& operator>>(...)' must take exactly two arguments
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: In
function `std::istream& operator>>(...)':
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:119: error: `
A' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:121: error: `
is' undeclared (first use this function)
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: At
global scope:
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:126: error: syntax
error before `&' token
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:126: error: `
std::ostream& operator>>(...)' must have an argument of class or enumerated
type
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:126: error: `
std::ostream& operator>>(...)' must take exactly two arguments
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: In
function `std::ostream& operator>>(...)':
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:126: error: new
declaration `std::ostream& operator>>(...)'
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:117: error: ambiguates
old declaration `std::istream& operator>>(...)'
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp: In

function `std::istream& operator>>(...)':
C:/Dokumente und Einstellungen/Valentin/Eigene Dateien/Uni/INFO/C++/Vorbereitung/Vektor.cpp:129: error: `
os' undeclared (first use this function)

Ausführung beendet

Achso Compiler ist Dev-C++.
 
Schau dir nochmal die Folie 142 vom Dörfler an. Da ist ein Beispiel mit friend-Funktionen in Templates...
(und ja... ich hock in der selben Vorlesung :D ... bzw sollte...)
Die Funktionen müssen dann nämlich "Template-Funktionen" sein.

Der Copy-Constructor ist... 8o
In den operatoren muss die Dimension überprüft werden.
oerator= gibt einen nicht existierenden Vektor C zurück... es muss aber *this zurückgegeben werden
 
Zurück
Oben