Frage

Die Frage ist einfach in den Titel, wenn ich eine Funktion, die ich über einen g_timeout_add() verwenden möchten, aber diese Funktion ist eine Elementfunktion der Klasse, ist es eine Möglichkeit, es mit g_timeout_add() verwenden kann?

War es hilfreich?

Lösung

Sie müssen eine Trampolin-Funktion verwenden, z.

extern "C" gboolean trampoline(gpointer data) {
    static_cast<MyClass*>(data)->mem_fun();
}

// ...
MyClass c = /* ... */;
g_timeout_add(/*...*/, static_cast<gpointer>(&c));

Unter diese Frage auf, warum Sie freie Funktionen verwenden sollten, wenn Sie portablen Code schreiben möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top