切掉的半個檸檬的加油站
阿新 • • 發佈:2019-01-10
//未成功的回撥函式 出現錯誤: 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; }