Templates



  • huhu ihrs,

    folgendes Beispiel:

    #include <iostream>
    using namespace std;
    
    template<class T>
    class Foo
    {
        public:
            void fkt(Foo f) {} // No Error
    };
    
    Foo<int>& fkt(Foo<int>& f)
    {
        return f;
    }
    
    int main()
    {  
        Foo f; // Error
    
        system("pause>nul");
        return 0;
    }
    

    Wieso muss ich innerhalb der Klasse kein Template-Argument angeben,
    außerhalb der Klasse aber schon ??

    danke euch schonma 🙂



  • In der template-Klassendefinition ist der Typ ja klar.
    Wenn du ein Objekt deiner template-Klasse anlegen willst, ist aber nicht klar, für welchen Typ das geschehen soll (so lange der compiler nicht aus Parametern des Konstruktors diesen ersehen kann).



  • Man betrachte einfach folgenden Fall:

    template <class T, class U, class V, class X>
    class Klasse
    {
    public:
    	Klasse(const Klasse &);
    	//und nicht
    	Klasse<T, U, V, X>(const Klasse<T, U, V, X> &);
    };
    

Anmelden zum Antworten