■吉里吉里/KAG/TJS雑談質問スレ■その25
■ このスレッドは過去ログ倉庫に格納されています
0439名前は開発中のものです。
2012/03/10(土) 21:12:56.64ID:qb2cL6Mn任意のメソッドをC関数にラッピングするだけなら
template<class T>
struct MethodWrapper {
MethodWrapper(T &instance, void (T::*method)()) : instance(instance), method(method) {}
T &instance;
void (T::*method)();
static void callback(void *param) {
MethodWrapper *self = (MethodWrapper*)param;
((self->instance).*(self->method))();
}
};
こういうテンプレート作っておいて
class A;
A a;
MethodWrapper<A> wrap(a, &A::method);
entrycallback(MethodWrapper<A>::callback, &wrap);
こんなかんじで任意のクラスの任意のメソッド(ただし型は固定)に対応できるよ。
真の任意メソッド対応はパラメータのバインド処理も組む必要があるのでさすがにちょっとめんどくさい
それはさておき、公式のほうは公開メソッド化しておいたので、dee さんが次にコンパイルしてくれれば反映されます。
■ このスレッドは過去ログ倉庫に格納されています