Funktionszeiger als Übergabeparameter



  • Einen schönen guten Abend!

    Ich habe ein Menü aus grafischen Elementen. Beim Mausklick auf diese möchte ich die entsprechende Funktion ausführen. Um Element und Funktion zu verknüpfen, habe ich in der Klasse des Elements einen Zeiger implementiert, der auf die Entsprechende Funktion verweist.

    void (*Function) ();
    

    Definiert wird er im Konstruktor.

    StringItem::StringItem (std::string Content, void Reference (), int PositionX, int PositionY, int Size)
    {
    	// [...]
    	Function = Reference;
    }
    

    Wie muss der Übergabeparameter aussehen? Die Funktion allein als Parameter reicht anscheinend nicht.

    std::deque <StringItem> MenuItem;
    MenuItem.push_back (StringItem ("Foo", Bar (), 100, 100, 30));
    

    Weiterhin, wie gebe ich das Ziel des Zeigers zurück? Und ist mein Vorgehen eine akzeptable Lösung?

    Danke für Antworten im Voraus, Adam S



  • Gutes Tutorial über Funktionszeiger:
    http://www.newty.de/fpt/index.html

    Für freie oder statische Funktionen reicht ein Zeiger auf die Funktion. Bei einem Memberfunktionszeiger musst du noch irgendwie auf das Objekt verweisen.

    Wenn du das allerdings verstanden hast, dann empfehle ich dir so etwas, wie boost::function zu nehmen, was dir einen sehr schönen Wrapper für Funktionen als Variablen bietet.


Anmelden zum Antworten