可以为g_time_out添加一个类的成员函数吗?

时间:2010-05-01 17:49:52

标签: c++ gtk gtk2

问题只是在标题中,如果我有一个我想通过g_timeout_add()使用的函数,但是这个函数是一个类成员函数,有什么方法我可以用它{{1} }?

1 个答案:

答案 0 :(得分:2)

您需要使用蹦床功能,例如:

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

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

如果要编写可移植代码,请参阅this question有关使用自由函数的原因。