|
分類:[C/C++]
C++で以下のようなことがやりたいです。
class Test1{ public: int f1(int i); int f2(int i); };
class Test2{ public: int f1(int i); int f2(int i); };
struct Param{ void *t; int n; }
template <typename T, typename F> int autofunc(Param *p){ T *t = (T *) p->t; return t->F(p->n); }
int main(){ int (*foo[4])(Param *);
foo[0] = autofunc<Test1, Test1::f1>; foo[1] = autofunc<Test1, Test1::f2>; foo[2] = autofunc<Test2, Test2::f1>; foo[3] = autofunc<Test2, Test2::f2>; }
要するに、Paramを受け取ってTest1::f1のような関数を呼び出したいわけです。 そして、それを仲介する関数をテンプレートで自動的に作りたいです。
このソースではコンパイルできません。 この目的を達成するにはどう書けばいいのでしょうか。
|