//未成功的回调函数
出现错误: no matching function for call to 'MainWindow::callback(int, <unresolved overloaded function type>)'
class a
{
public:
a();
~a();
int Test1(int num,int a);
int Test2(int num,int b);
int Caller(int (*ptr)(int ,int),int n,int t);
void Call();
};
a::a(){}
a::~a(){}
int a::Test1(int num,int a)
{
printf("i am test1,the data is %d %d\n",num,a);
return 0;
}
int a::Test2(int num,int b)
{
printf("i am test2,the data is %d===%d\n",num,b);
return 0;
}
int a::Caller(int (*ptr)(int ,int),int n,int t)//指向函数的指针作函数参数,这里第二个参数是函数指针的参数
{
int a=(*ptr)(n,t);
return a;
}
void a::Call()
{
Caller(Test1,20,30);//这里报错
printf("************************\n");
Caller(Test2,10,40);//这里报错
}
int main(void)
{
a *v=new a();
v->Call();
return 1;
}
//成功的回调函数
class a
{
public:
a();
~a();
int Test1(int num,int a);
int Test2(int num,int b);
int Caller(int (a::*ptr)(int ,int),int n,int t);
void Call();
};
a::a(){}
a::~a(){}
int a::Test1(int num,int a)
{
printf("i am test1,the data is %d %d\n",num,a);
return 0;
}
int a::Test2(int num,int b)
{
printf("i am test2,the data is %d===%d\n",num,b);
return 0;
}
int a::Caller(int (a::*ptr)(int ,int),int n,int t)//指向函数的指针作函数参数,这里第二个参数是函数指针的参数
{
int a=(this->*ptr)(n,t);
return a;
}
void a::Call()
{
Caller(&a::Test1,20,30);//这里报错
printf("************************\n");
Caller(&a::Test2,10,40);//这里报错
}
int main(void)
{
a *v=new a();
v->Call();
return 1;
}