Frage zu Templates



  • Ich habe mal wieder eine Frage zu Templates:

    Beispiel:

    template <typename Type>
    class Zahl {
        private:
            Type data;
        public:
            void plus(const Zahl &zahl); //Warum geht das? Die Klasse Zahl ist doch ein Template?
    };
    

    Ist es so, dass das "Zahl" in der Klasse für Zahl<Type> steht?



  • pyhax schrieb:

    Ist es so, dass das "Zahl" in der Klasse für Zahl<Type> steht?

    Ja. Das sind zwar grunsätzlich alles Templates, aber nach dem du die Klasse spezialisiert hast, ist alles was drin ist auch spezialisiert.



  • ? Ich habe die Klasse doch gar nicht spezialisiert?



  • pyhax schrieb:

    ? Ich habe die Klasse doch gar nicht spezialisiert?

    Du hast mich nicht verstanden.

    template<class T>
    class A {};
    
    A<int> a; // Hier hast du A spezialisiert.
    


  • pyhax schrieb:

    Ist es so, dass das "Zahl" in der Klasse für Zahl<Type> steht?

    ja, per definitionem.



  • cooky451 schrieb:

    pyhax schrieb:

    ? Ich habe die Klasse doch gar nicht spezialisiert?

    Du hast mich nicht verstanden.

    template<class T>
    class A {};
    
    A<int> a; // Hier hast du A spezialisiert.
    

    Ah, ok. Ich fand es bloß merkwürdig, dass ich keine Compiler Errors/Warnings bekommen habe, und wollte schon fast so etwas in der Art machen:

    template <typename T>
    class Zahl {
        private:
            typedef Zahl<T> Self; 
    };
    

    Danke 😃


Anmelden zum Antworten