回调函数

2874 3
胡h 2022-9-2 09:13:48 | 显示全部楼层 |阅读模式
#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;
}
复制代码
胡h 2022-9-4 17:57:00 | 显示全部楼层
我现在也就算是个脚本小子吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行