templates: syntaxfehler before :: token
-
habe ein kleines testprogramm geschrieben, am besten ich stell mal den code rein.
//super.h #include <using.h> using namespace std; template <typename TSuper> class Super{ public: Super(int b); Super(int a, int b); ~Super(); protected: vector<TSuper*>* _elements; }; //unter.h #include <super.h> template <typename TSuper> class Unter : public Super<TSuper> { Unter(); Unter(int a); }; Unter::Unter(int a, int b):Super<TSuper>(){} /*Syntxfehler before `::' token */ Unter::Unter(int a):Super<TSuper>(b){}/*Syntxfehler before `::' token */
das problem ist, dass der compiler in unter.h meint:
syntaxfehler before `::' tokenich hab aber keine Ahnung warum. Hab schon kräftig gegoogelt zum Thema Templates aber nichts passendes gefunden...
matze
-
Du musst das so schreiben:
template< class T > Super< T >::Super( /* ... */ )
-
Any schrieb:
Du musst das so schreiben:
template< class T > Super< T >::Super( /* ... */ )
ähm statt Super sollte da Unter stehen
also:
template< class T > Unter< T >::Unter( /* ... */ )
-
Danke erstmal für die schnelle Hilfe.
Bei dem oben geposteten source-code hab ich noch einen Fehler entdeckt.Die Funktion
Unter::Unter(int a, int b):Super<TSuper>(){}
gibt es natürlich garnicht, weil sie in der Klassendefinition nicht vorkommt...