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 `::' token

    ich 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...


Log in to reply