回调函数的代码示例

#include "stdio.h"

typedef void (*Fun)(char *ch1, char* ch2);    //函数指针类型:指向参数为(void *p, char *ch),返回值为void *的函数

//外部宿主函数
void GetCallBack(Fun fun)//这里是用一个外部函数来展示调用方的,此时回调函数fun是在函数里;
                           //当然也可以定义一个别的类,然后把回调函数传给成员变量.
{     
    //也可以加一些判断条件

    fun("This is ", "fCallBack");//!!!此处是在调用回调函数
}

class A
{
public:
    A(){};
    ~A(){};
    static void fCallBack(char *ch1, char *ch2)
    {
        printf("%s%s\n",ch1, ch2);
    }
    
    void Test()
    {                           //把函数名当做参数,这里相当于设置回调,把回调函数传递给上层.
        GetCallBack(fCallBack);//这里fCallBack声明为static,所以此处可以直接使用.
    }
};

int main()
{
    A a;
    a.Test();
    return 0;
}

#include
"stdio.h" typedef void (*Fun)(char *ch1, void *p); //函数指针类型:指向参数为(void *p, char *ch),返回值为void *的函数 //外部宿主函数 void GetCallBack(Fun fun, void *p) { fun("test", p); } class A { public: A(){}; ~A(){}; static void fCallBack(char *ch1, void *p) { A *pInstance = (A*)p; printf("%s%s\n",ch1); } void Test() { GetCallBack(fCallBack, this);//传点别的参数. } }; int main() { A a; a.Test(); return 0; }

 

posted @ 2020-03-11 21:51  心媛意码  阅读(353)  评论(0编辑  收藏  举报