Вам нужно использовать функцию батута, например ::100100
extern "C" gboolean trampoline(gpointer data) {
static_cast<MyClass*>(data)->mem_fun();
}
// ...
MyClass c = /* ... */;
g_timeout_add(/*...*/, static_cast<gpointer>(&c));
См. этот вопрос о том, почему вы должны использовать бесплатные функции, если вы хотите написать переносимый код.