Можно ли дать g_time_out add функцию-член класса? - PullRequest
0 голосов
/ 01 мая 2010

Вопрос просто в заголовке, если у меня есть функция, которую я хочу использовать через g_timeout_add(), но эта функция является функцией-членом класса, есть ли способ, которым я могу использовать ее с g_timeout_add()?

1 Ответ

2 голосов
/ 01 мая 2010

Вам нужно использовать функцию батута, например ::100100

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

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

См. этот вопрос о том, почему вы должны использовать бесплатные функции, если вы хотите написать переносимый код.

...