#include <iostream>
using namespace std;

class A;
void call(A* a, void (A::*func)(int, int, int));

class A{
public:
void func2(int a,int b,int c) {
cout << "func2(" << a << "," << b << "," << c << ")" << endl;
}
void callfunc() {
typedef void(A::*Afunction)(int, int, int);
Afunction af = &A::func2;
call(this, af);
}
};

void call(A* a, void (A::*func2)(int, int, int))
{
a->func2(1,2,3);
}
void func1(int a,int b,int c)
{
cout << "func1(" << a << "," << b << "," << c << ")" << endl;
}
int main(){
// call(func1);
A a;
a.callfunc();
}