Я предлагаю вам использовать функтор (или объект функции), а не указатель на функцию, поскольку первый безопаснее, а указатель на функцию может быть затруднительным или неудобным для передачи состояния в или из функции обратного вызова
Функтор - это, по сути, повторная реализация operator () класса A, для очень подробного описания, пожалуйста, обратитесь к Википедии: http://en.wikipedia.org/wiki/Function_object
Код должен быть примерно таким:
class A {
public:
A() {};
void operator()(int function_index, int parameter) {
if(function_index == 1)
func1(parameter);
else if(function_index == 2)
func2(parameter);
else
{ //do your other handling operation
}
}
private:
void func1( int ) {};
void func2( int) {};
};
Используя этот класс:
A a;
a(1, 123); //calling func1
a(2, 321); //calling func2