#include <map>
#include <stdio.h>
#include <string>
using namespace std;
class A;
typedef int (A::*func) (int,int);
class A {
public:
map<std::string, func> info_dynamic;
void init();
int sum(int, int);
void show(int, int);
};
int A::sum(int a, int b)
{
printf("sum = %d\n", (a+b));
return 0;
}
void A::init()
{
info_dynamic.insert(pair<string, func>(string("key"), &A::sum));
}
void A::show(int a, int b)
{
map<string, func>::iterator result = info_dynamic.find("key");
(this->*(result->second))(a,b);
}
int main()
{
A *a = new A();
a->init();
a->show(1,2);
a->show(2,3);
return 0;
}
compile:
# g++ func.c -std=c++11
result:
# ./a.out
sum = 3
sum = 5
In a class, member function pointer can be called like
&CLASS_name::FUNC_name
When you want to call member function pointer in a class,
this->*(member func pointer) (Params)