Funktionszeiger bei Überladenen Funktionen



  • Wie kann man bei zwei Funktionen gleichen Namens mit unterschiedlichen parameterlisten spezifizieren, welche man meint, wenn man einen Funktionszeiger will?

    void Handler(CFoo &) { ... }
    void Handler(CBar &) { ... }
    

    Folgendes "drumrum" (reduziert):

    template <typename T, typename Func> class CAdapter
    {
       T    m_obj
       Func m_func;
    
     public:
       void DoSomething() { m_func(..); }
    };
    
    template <typename T, typename Func> inline CAdapter<Func> GetAdapted(T & obj, Func f)
    {
       return CAdapter<Func>(obj, f);
    }
    

    (Wie) Kann ich bei

    GetAdapted(Handler)
    

    angeben, welche Funktion verwendet werden soll?



  • Ich verstehe deine Frage nicht.

    Bei Funktionspointern muss man immer die Parameter der Funktion mit angeben, also sehe ich keinen Konfliktbedarf bei überladenen Funktionen 😕



  • peterchen schrieb:

    (Wie) Kann ich bei

    GetAdapted(Handler)
    

    angeben, welche Funktion verwendet werden soll?

    In dem du (z.B. über einen static_cast) den genauen Typ mit angibst:

    GetAdapted(static_cast<void (*)(CFoo&)>(Handler));
    

Anmelden zum Antworten