#include <iostream>
using namespace std;
typedef void (*CALLBACK)( int a, int b );
class CBase
{
public:
CBase();
public:
/*
** 注册回调函数
**
*/
void RegisterCallback( CALLBACK fun, int k, int j );
/*
** 调用回调函数
**
*/
void CallCallback();
private:
/*
** 成员变量:
** 分别保存回调函数指针
** 回调函数中的形参参数
**
*/
int m;
int n;
CALLBACK func;
};
CBase::CBase()
{
func = NULL;
}
void CBase::RegisterCallback( CALLBACK fun, int k, int j )
{
func = fun;
m = k;
n = j;
return;
}
void CBase::CallCallback()
{
func( m, n );
return;
}
//////////////////////////////////////////////////////////////////////////
// 函数1
void fun1( int a, int b )
{
cout << "fun1 is called" << endl;
cout << a << " " << b << endl;
cout << "*****************" << endl;
return;
}
//////////////////////////////////////////////////////////////////////////
class CCall
{
public:
/*
** 函数2,类中的函数
** 注意这是个静态函数
*/
static void fun2( int a, int b );
};
void CCall::fun2( int a, int b )
{
cout << "fun2 is called" << endl;
cout << a << " " << b << endl;
cout << "*****************" << endl;
return;
}
//////////////////////////////////////////////////////////////////////////
void main(void)
{
CBase bbbbb;
bbbbb.RegisterCallback( fun1, 1, 2 );
bbbbb.CallCallback();
bbbbb.RegisterCallback( CCall::fun2, 10, 20 );
bbbbb.CallCallback();
}