templates und character types



  • Ich hab eine klasse, mit einem character type als template argument
    (also char, wchar_t, u16char, u32char)

    template<typename char_type>
    class MyClass{
      char_type c;
    public:
      void setDefault(){
        c = 'a';
      }
    };
    

    und da ist auch schon das problem, egal welcher char_type es ist, ich will immer das gleiche zeichen speichern, aber will die funktion für jeden typ spezialisieren.
    ohne geht aber auch nicht, weil es bei wchar_t L'a' heißt, bei u16char u16'a' und so weiter... gibt es da eine einfachere methode?



  • Das ist das dritte mal, dass ich diese Frage lese...
    http://www.c-plusplus.net/forum/314145-full
    Könnte jemand mal eine gute Antwort schreiben und sie in die FAQ stellen?



  • template<typename char_type>
    struct MyClassCharTraits;
    
    template<typename char_type>
    struct MyClassCharTraits<char>
    {
      static const char default_value = 'a';
    };
    
    template<typename char_type>
    struct MyClassCharTraits<wchar_t>
    {
      static const wchar_t default_value = L'a';
    };
    
    ...
    
    template<typename char_type>
    class MyClass
    {
    private:
      char_type c;
    public:
      void setDefault()
      {
        c = MyClassCharTraits<char_type>::default_value;
      }
    };
    


  • danke, hat geklappt


Anmelden zum Antworten