Имеется указатель на член-функцию. Это решит вашу проблему. Я удивлен, что ваша функция "TestSwitch" компилируется, так как синтаксис вызова немного отличается от того, что вы могли ожидать. Должно быть:
bool res = (this->*CaseMethod)( 999, "hello world" );
Однако, вы можете найти комбинацию boost :: function и boost :: bind, которая немного упростит задачу, поскольку вы можете избежать странного синтаксиса вызова.
boost::function<bool(int,std::string)> f=
boost::bind(&MyClass::CaseMethod1,this,_1,_2);
Конечно, это свяжет его с текущим указателем this
: вы можете сделать указатель this
функции-члена явным третьим параметром, если хотите:
boost::function<bool(MyClass*,int,std::string)> f=
boost::bind(&MyClass::CaseMethod1,_1,_2,_3);
Другой альтернативой может быть использование виртуальных функций и производных классов, но это может потребовать серьезных изменений в вашем коде.