c++回調之應用函數指針示例。本站提示廣大學習愛好者:(c++回調之應用函數指針示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c++回調之應用函數指針示例正文
c++回調之應用函數指針示例
#include <iostream>
using namespace std;
/************************************************************************/
/* 基層完成: CALLBACK */
/************************************************************************/
typedef void (*CALLBACKFUN)(int a,int b);
class base
{
private:
int m;
int n;
static CALLBACKFUN pfunc;
public:
base():m(0), n(0){};
void registercallback(CALLBACKFUN fun,int k,int j);
void callcallback();
};
CALLBACKFUN base::pfunc=NULL; /* static初始化 */
// 注冊回調函數
void base::registercallback(CALLBACKFUN fun,int k,int j)
{
pfunc=fun;
m=k;
n=j;
}
void base::callcallback()
{
base::pfunc(m,n);
}
基層界說回調函數的時刻,須要供給以下幾個接口:
1. 完成注冊接口:供給一個接口給下層,經由過程該接口,下層注冊回調完成接口,基層將該完成接口地址傳遞給界說的回調指針(CALLBACKFUN),該初始化舉措是必需的,不然沒法完成回調;
2. 觸發接口:該接口供給觸刊行為,當挪用該接口時,就會觸發一次函數回調;
// cbByfunction.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "cbByfunction.h"
/************************************************************************/
/* 下層回調注冊 */
/************************************************************************/
void seiya(int a,int b)
{
cout << "..." << a << "..." << b << endl;
cout << "this is seiya callback function" <<endl;
}
void zilong(int a,int b)
{
cout<<a<<endl<<b<<endl;
cout<<"this is zilong callback function"<<endl;
}
int main(int argc, char* argv[])
{
// 注冊基層回調函數
base c_base;
c_base.registercallback(seiya, 5, 6);
c_base.callcallback();
c_base.registercallback(zilong, 7, 8);
c_base.callcallback();
return 0;
}