How do I declare an array of pointers to member functions?
Keep your sanity with “typedef”. 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).