1. 程式人生 > >切掉的半個檸檬的加油站

切掉的半個檸檬的加油站

//未成功的回撥函式

 出現錯誤: 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;
    }