Template-Codestück



  • hallo,

    template<typename Class>
    MenuEntryMethod<Class>* makeMenuEntry(Class* p, void (Class::*method)(), std::string const& name)
    {
      return new MenuEntryMethod<Class>(p, method, name);
    }
    

    Kann mir mal jemand erklären, was das

    void (Class::*method)()
    

    sein soll? Ich habe sowas noch nie gesehen 😕



  • Ehm Methodenzeiger ... dafür brauchst du ein Objekt und halt einen Zeiger auf die Funktion ... kennst ja sicherlich Funktionzeiger, oder? Sowas wie eine WindowProc in der WinAPI 😉 Das ist sozusagen die C++-Version dafür ... guck mal auf www.function-pointer.org ...

    void (Class::*method)()
    

    ist ein Methodenzeiger auf eine Memberfunktion die als Rückgabewert und Parameter void hat. Nicht const. z.B. wäre folgendes möglich:

    class bar
    {
    public:
        void foo();
    }
    
    template<class T>
    void call(T const & obj, void (T::*func_ptr)())
    {
        (obj.*func_ptr)();
    }
    
    int main()
    {
        bar inst;
        call<bar>(inst, &inst::foo);
    }
    

    ...


Anmelden zum Antworten