Operatorüberladung in Templateklassen
-
Hallo LEute
meine Frage heute, bin ja noch am üben, und mache grad bisschen templateklassen!
Erstmal mein Code:
template<typename T1=int,typename T2=int> class test { public: test(){}; test(test& t){data=t.data;index = t.index;} void SetData(T1 _tdata,T2 _tindex); friend ostream& operator<<(ostream& stream,test<T1,T2>& t) //in klasse wegen template { stream<<t.data; return stream; } friend test& operator=(test& t) { data=t.data; index=t.index; return *this; } private: T1 data; T2 index; }; template<typename T1,typename T2> void test<T1,T2>::SetData(T1 _tdata,T2 _tindex) { data=_tdata; index= _tindex; } int main(int argc, char* argv[]) { test<> t; t.SetData(10,20); test<> t2; t2=t; cout<<t; cout<<t2; getch(); return 0; }und hier fehlermeldungen:
[C++ Fehler] Unit1.cpp(28): E2239 'operator =(test<T1,T2> &)' muß eine Elementfunktion sein [C++ Fehler] Unit1.cpp(28): E2239 'operator =(test<int,int> &)' muß eine Elementfunktion sein [C++ Fehler] Unit1.cpp(49): E2450 Undefinierte Struktur 'test<int,int>' [C++ Fehler] Unit1.cpp(49): E2449 Größe von 't' unbekannt oder Null [C++ Fehler] Unit1.cpp(49): E2450 Undefinierte Struktur 'test<int,int>' [C++ Fehler] Unit1.cpp(51): E2450 Undefinierte Struktur 'test<int,int>' [C++ Fehler] Unit1.cpp(51): E2449 Größe von 't2' unbekannt oder Null [C++ Fehler] Unit1.cpp(51): E2450 Undefinierte Struktur 'test<int,int>'wie überladet man denn operatoren in tamplates richtig?
-
Die Fehlermeldung sagt eigentlich alles:
Das "friend" ist zu viel:
test& operator=(test& t) { data=t.data; index=t.index; return *this; }