Tuesday, August 18, 2009

c++: lookup func table

enum {fun1, fun2, ..., num};

class foo {
fun1(bar &b) {}
fun2(bar &b) {}

void (foo::*lookuptable[num]) (bar &b);

foo() {
lookuptable[fun1] = &foo::fun1;
lookuptable[fun2] = &foo::fun2;
}

void dlook(int num, bar &b) {
(this->*lookuptable[num]) (b);
}

};

No comments:

Post a Comment