Anfängerfrage Template



  • Der folgende Code will einfach nicht laufen. Was mach ich denn falsch? Danke.

    #include <iostream>
    
    using namespace std;
    
    template<class T>
    class test
    {
    private: 
    	T i;
    public:
    	test::test(T);
    };
    
    test::test(T z)
    {
    	i = z;
    }
    
    int main()
    {
    	test t(0);
    	return 0;
    }
    


  • template<class T>
    test<T>::test(T z)
    {
        i = z;
    }
    
    int main()
    {
        test<int> t(0);
        return 0;
    }
    


  • template<class T>
    class test
    {
    private:
        T i;
    public:
        test::test(T);
    };
    

    lass mal das test:: weg

    btw. solltest du Fehlermeldungen immer mit angeben und die Zeilen entsprechend markieren, in denen die Fehlermeldung erscheint.

    wmfrs <-- lesen!



  • Hallo, danke.
    Ich habe keine konkrete Fehlermeldung genannt, weil es nur so Fehler hagelte, 21 glaub ich.
    Aber auch nach der von euch genannten Änderung habe ich immer noch 8 Fehler. Soll ich die wirklich alle nennen? Der Code ist von mir so gekürzt worden, dass ich dachte, dass ihr ohne weiteres sofort seht, wo der Haken ist.
    Könnt ihr mir sagen, wo der Fehler noch liegt? Ich will jetzt nicht alle 8 Fehlermeldungen nennen. Wenn es doch gewünscht wird, mach ichs gern.
    Danke.



  • Hallo,
    der korrekte Code würde so aussehen:

    #include <iostream> 
    
    using namespace std; 
    
    template<class T> 
    class test 
    { 
    private: 
        T i; 
    public: 
        test(T); 
    }; 
    template <class T>
    test<T>::test(T z) 
    { 
        i = z;  // Besser wäre die Verwendung der Initialisierungsliste
    } 
    
    int main() 
    { 
        test<int> t(0); 
        return 0; 
    }
    


  • 👍 Danke. Noch eine Frage: Muss das template<class T> vor jede Methode gesetzt werden?



  • Fragender schrieb:

    👍 Danke. Noch eine Frage: Muss das template<class T> vor jede Methode gesetzt werden?

    Wenn du sie ausserhalb der Klasse definierst, dann ja. Innerhalb der Klasse ist
    das nicht noetig.

    mfg
    v R


Anmelden zum Antworten