#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 ",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 ",ch1); } void Test() { GetCallBack(fCallBack, this);//传点别的参数. } }; int main() { A a; a.Test(); return 0; }