000
28.01.2007, 15:51 Uhr
TypusM
|
Folgender Code ohne Templates funktioniert einfachfrei:
Code: |
class graph { private: string gr_name; public: graph(string t) : gr_name(t) { } friend ostream& operator<<(ostream &,const graph &); { out << g.gr_name; return(out); } }
|
Doch kaum wenn ich Templates benutze, dann erscheint folgende Fehlermeldung vom Compiler: "[Linker Fehler] Unresolved external 'operator <<(_STL::basic_ostream<char, _STL::char_traits<char> >&, const graph<char, int>&)' referenced from C:\STUDIUM\....MAIN.OBJ".
Code:
Code: |
template <typename T1, typename T2> class graph { private: string gr_name; public: graph(string t) : gr_name(t) { } friend ostream& operator<<(ostream &,const graph<T1,T2> &); { out << g.gr_name; return(out); } }
|
Woran könnte der Fehler liegen?? Der Fehler tritt erst auf, wenn ich in meiner main.cpp:
Code: |
graph<char,int> g1("Graph"); cout << g1;
|
hineinschreiben. Sollte ich "cout<<g1;" weglassen, meldet er nix, macht ja aber kein Sinn, weil i es ja nutzen will ^^. Das keine Typvariablen in der Klasse stehen, liegt daran, dass ich hier etwas der Übersichthalter gekürzt habe.
Vielen Dank im vorraus. Dieser Post wurde am 28.01.2007 um 15:52 Uhr von TypusM editiert. |