Umwandlungsproblem mit template-klasse



  • Gute Nacht allerseits.

    Wieso funktioniert folgendes nicht:

    template<class T>
    class Klasse 
    {
     public: Klasse(int z) { }
    };
    
    template<class T>
    void func(Klasse<T> a) { }
    
    int main()
    {
     func(2); // geht nicht  :confused:  wieso wird Klasse(int) nicht zur umwandlung genommen ??????
    }
    


  • Hi,

    gehen wir mal davon aus es wird Klasse(int), so wie du es gern hättest aufgerufen.
    Was wäre dann aber T ?

    Die 2 würde in ein Klasse<?> mit Hilfe von Klasse<?>(int) konvertiert werden 😉

    Du hättest zwei Möglichkeiten, um dieses Problem zu beheben:

    1.) func keine Templatefunktion, sondern nur mit gewünschtem Typ:

    void func(Klasse<int> a) { }
    

    2.) Explizit T angeben:

    template<class T>
    void func(Klasse<T> a) { }
    
    int main()
    {
     func<int>(2); 
    }
    

    Nebenbei hast du etwas vermasselt, was ich vor hatte 😡



  • KasF schrieb:

    Nebenbei hast du etwas vermasselt, was ich vor hatte 😡

    !?



  • Konrad Rudolph schrieb:

    KasF schrieb:

    Nebenbei hast du etwas vermasselt, was ich vor hatte 😡

    !?

    ich wette aufs fehlersuchspiel 😉


Anmelden zum Antworten