0

質問は単にタイトルにあります。を介して使用したい関数がある場合g_timeout_add()、この関数はクラスメンバー関数ですが、それを使用する方法はありますg_timeout_add()か?

4

1 に答える 1

2

トランポリン関数を使用する必要があります。例:

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

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

ポータブルコードを作成する場合に無料の関数を使用する必要がある理由については、この質問を参照してください。

于 2010-05-01T17:57:23.537 に答える