Kann g_time_out Fügen Sie eine Elementfunktion einer Klasse gegeben werden?
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?
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