回调函数实现的实现动态绑定

来源:互联网 发布:ubuntu 软件安装器 编辑:程序博客网 时间:2024/06/09 19:40
 

// CallBackApp.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


typedef void(*pcb)(char *);

 

void GetCallBack(pcb callback)
{
    /*do something*/
    char buffer[] = "hello world!";
    callback(buffer);
}

void CallbackFun1(char *s)
{
    /* do something */
    cout<<s<<endl;
    cout<<"call CallbackFun1!"<<endl;
}

 


void CallbackFun2(char *s)
{
    /* do something */
    cout<<s<<endl;
    cout<<"call CallbackFun2!"<<endl;
}

void CallbackFun3(char *s)
{
    /* do something */
    cout<<s<<endl;
    cout<<"call CallbackFun3!"<<endl;
}

pcb funArray[3] = {CallbackFun1,CallbackFun2,CallbackFun3};

int _tmain(int argc, _TCHAR* argv[])
{

    for(int i=0;i<3;i++)
    {
        GetCallBack(funArray[i]);
    }
   
 return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <iostream>
#include <string>
using namespace std;


typedef void(*pcb1)(char *);
typedef void(*pcb2)(long value);
typedef void(*pcb3)(string str);

struct Funtion
{
 pcb1 f1;
 pcb2 f2;
 pcb3 f3;

}myFun;

void GetCallBack(Funtion fun)//(pcb1 callback)
{
 /*do something*/
 char buffer[] = "hello world!";
 //callback(buffer);
 fun.f1(buffer);
}

void CallbackFun1(char *s)
{
 /* do something */
 cout<<s<<endl;
 cout<<"call CallbackFun1!"<<endl;
}

void CallbackFun2(char *s)
{
 /* do something */
 cout<<s<<endl;
 cout<<"call CallbackFun2!"<<endl;
}

void CallbackFun3(char *s)
{
 /* do something */
 cout<<s<<endl;
 cout<<"call CallbackFun3!"<<endl;
}

pcb1 funArray[3] = {CallbackFun1,CallbackFun2,CallbackFun3};

 


int _tmain(int argc, _TCHAR* argv[])
{
 Funtion myFuntion;

 for(int i=0;i<3;i++)
 {
  myFuntion.f1 = funArray[i];
  GetCallBack(myFuntion);
 }

 return 0;
}

 

 

原创粉丝点击