templates mit standard argumenten



  • Hallo,

    ich habe eine Klasse, die in den meisten Fällen mit nur einem Typwert eingesetzt wird, es aber auch Fälle gibt in denen ein anderer Typewert völlig andere Prozeduren erfordert, der sich in einer enum befindet. Nun dachte ich, dass wenn ich schreibe

    template<MyEnum T = Example> class XX ...
    

    , in der Nutzung der Klasse volgendes machen kann

    XX* x = new XX(); XX<Example2> x = new XX<Example2>();
    

    Jedoch beschwert sich der Compiler, dass er bei XX keine Definition finden kann.
    Ich dachte dafür sind Standardparameter da?


  • Mod

    XX<>
    

    Außerdem: new? Haben wir dir das nicht langsam mal ausgetrieben?



  • Das Problem ist, dass XX immer noch ein Template ist, und keine Klasse. Eine Parameterliste muss trotzdem angegeben werden. Das ist, als würdest du eine Funktion, die für jeden Parameter Default-Argumente hat, ohne leeres Klammerpaar aufzurufen versuchen...



  • template<MyEnum T = Example> class basic_XX ...
    typedef basic_XX<> XX;
    
    XX x; // so
    basic_XX<int> y; // oder so
    

Anmelden zum Antworten