先看兩個demo:
一.在類test1中調用函數print() ,把print()的函數指針傳遞給test1的函數指針參數
test1.h:
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- typedef void (*FUNP)();
- class test1
- {
- public:
- void fun1(FUNP p)
- {
- (*p)();
- }
- };
main.cpp
- #include <stdio.h>
- #include "test1.h"
- void print();
- int main()
- {
- test1 tet1;
- tet1.fun1(print);
- getchar();
- return 0;
- }
- // void (*p)()
- void print()
- {
- printf("hello world\n");
- }
// 打印 “hello world”
二.類Test1 中調用Test2的方法函數。 在類test2中包含test1對象,將test2中的函數指針傳給test1
test2.h:
#include "test1.h"
- #include <iostream>
- using namespace std;
- class Test2
- {
- public:
- Test2()
- {
- tet1.fun1(fun2);
- }
- static void fun2()
- {
- cout<<"Test2"<<endl;
- }
- public:
- test1 tet1;
- };
test1.h:
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- typedef void (*FUNP)();
- class test1
- {
- public:
- void fun1(FUNP p)
- {
- (*p)();
- }
- };
main:
- #include <stdio.h>
- #include "test2.h"
- int main()
- {
- Test2 tet2;
- getchar();
- return 0;
- }
// 結果:打印“Test2”
附上兩個deome,搞清楚的話 回調函數基本可以套着用了
http://download.csdn.net/my
http://blog.csdn.net/qq_17242957/article/details/53002652