template<> methoden überladen



  • Hallo

    kann mir einer sagen wie man

    template<>
    struct mystruct<void,void,void,void,void,void,void,void,void> : mybase
    {
       public:
        virtual void Methode() override;
    };
    

    korrekt überlädt?

    template<>
    void mystruct<void,void,void,void,void,void,void,void,void>::Methode()
    {}
    

    wirft die Fehler

    Kann nicht explizit spezialisiert werden
    error C2143: Syntaxfehler: Es fehlt ';' vor '<'
    error C2182: 'FixedDelegate': Unzulässige Verwendung des Typs 'void'
    error C2988: Unerkannte Vorlagendeklaration/-definition
    error C2059: Syntaxfehler: '<'
    fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen
    


  • void mystruct<void,void,void,void,void,void,void,void,void>::Methode()
    {}
    


  • das geht dann aber nicht im header oder?



  • Pria schrieb:

    das geht dann aber nicht im header oder?

    inline



  • Danke! Erledigt!



  • Wobei das keine Überladung sondern einfach nur die Definition (aka. Implementierung) der Methode ist.
    Die du natürlich auch direkt in der Klasse machen kannst:

    template<> 
    struct mystruct<void,void,void,void,void,void,void,void,void> : mybase 
    { 
        public: 
        // inline ist implizit, daher hier nicht benötigt, wäre aber trotzdem erlaubt
        /*inline*/ virtual void Methode() override
        {
        }
    };
    


  • Nein, das habe ich probiert und zumindest der VS2005 Compiler frisst das so nicht bzw. nimmt das schon, will aber dann nicht die override funktione nehmen.

    Weiß auch nicht wieso, ist mir jetzt aber auch egal :xmas1:


Anmelden zum Antworten