class Fred { public: int f(char x, float y); int g(char x, float y); int h(char x, float y); int i(char x, float y); //... }; typedef int (Fred::*FredPtr)(char x, float y);Here's the array of pointers to member functions:
FredPtr a[4] = { &Fred::f, &Fred::g, &Fred::h, &Fred::i };To call one of the member functions on object "fred":
void userCode(Fred& fred, int methodNum, char x, float y) { //assume "methodNum" is between 0 and 3 inclusive (fred.*a[methodNum])(x, y); }You can make the call somewhat clearer using a #define:
#define callMethod(object,ptrToMethod) ((object).*(ptrToMethod)) callMethod(fred, a[methodNum]) (x, y);