Hier kein RTTI?



  • Nehmen wir mal an ich habe folgende Templateklasse

    template<typename T> class console
    {
    public: 
        console (void)
        {
            if (typeid(T) == typeid(int))
                globale_externe_API_funktion_für_int_aufrufen ();
    
            else if (typeid(T) == typeid(wchar_t))
                globale_externe_API_funktion_für_wchar_t_aufrufen ();
        }
    
    private:
    };
    

    Wie kann ich hier auf RTTI verzichten?



  • Template Spezialisierung. Ist eh viel sinnvoller weil RTTI zur Laufzeit läuft und Templates zur Compilezeit "aufgelöst" wird.



  • Du könntest 2 spezialisierte Templates schreiben für diese 2 Typen.



  • Pellaeon schrieb:

    Du könntest 2 spezialisierte Templates schreiben für diese 2 Typen.

    Oder boost::type_traits benutzen.



  • HumeSikkins schrieb:

    Pellaeon schrieb:

    Du könntest 2 spezialisierte Templates schreiben für diese 2 Typen.

    Oder boost::type_traits benutzen.

    Nixe Boost, kann mit STL und boost soviel anfangen wie Gina Wild mit ner Nonne



  • legolas@friends schrieb:

    HumeSikkins schrieb:

    Pellaeon schrieb:

    Du könntest 2 spezialisierte Templates schreiben für diese 2 Typen.

    Oder boost::type_traits benutzen.

    Nixe Boost, kann mit STL und boost soviel anfangen wie Gina Wild mit ner Nonne

    Wenn Gina Wild aus ihrem Hauptberuf aussteigen kann, dann wirst du wohl auch STL und boost lernen können. Wer ernsthaft C++ programmieren will, der kommt da sowieso nicht drum rum.

    Für diesen speziellen Fall reicht natürlich auch ein schnelles is_same_type, à la:

    template <class T, class U>
    struct is_same_type {
        enum { value = 0 };
    };
    template <class T>
    struct is_same_type<T, T> {
        enum { value = 1 };
    };
    

Anmelden zum Antworten