C++两个不同类间回调函数的简单应用
回调函数实质就是一个通过函数指针调用的函数。我们可以把函数指针想象是一个普通的指针,一个普通指针指向一个函数,这样就建立起我们访问函数的通道。当然任何时候,我们可以通过这个指针访问该函数。
首先定义一个公共头文件CommonClass.h
添加如下代码
typedef void (*CallBackPtr)(int,int);//定义一个回调函数类型指针
其次定义一个CallBackClass类
CallBackClass.h
#pragma once
#include "CommonClass.h"
#include <iostream>
using namespace std;
class CallBackClass
{
public:
CallBackClass(void);
~CallBackClass(void);
public:
static void RecvClass(int a,int b); //声明一个回调函数
};
CallBackClass.cpp
#include "CallBackClass.h"
CallBackClass::CallBackClass(void)
{
}
CallBackClass::~CallBackClass(void)
{
}
/*******回调函数的定义**********/
void CallBackClass::RecvClass(int a,int b)
{
cout<<"a:"<<a<<" "<<"b:"<<b<<endl;
cout<<"我是回调函数"<<endl;
}
最后定义一个MainClass类
MainClass.h
#include "CallBackClass.h"
CallBackClass::CallBackClass(void)
{
}
CallBackClass::~CallBackClass(void)
{
}
/*******回调函数的定义**********/
void CallBackClass::RecvClass(int a,int b)
{
cout<<"a:"<<a<<" "<<"b:"<<b<<endl;
cout<<"我是回调函数"<<endl;
}
MainClass.cpp
#include "MainClass.h"
#include "CallBackClass.h"
MainClass::MainClass(void)
{
}
MainClass::~MainClass(void)
{
}
void MainClass::SetCallBack(CallBackPtr pt)
{
callback=pt;
}
void MainClass::run()
{
callback(1,2);
}
int main() //入口函数
{
CallBackClass m_call;
MainClass m_main;
m_main.SetCallBack((CallBackPtr)&m_call.RecvClass);
m_main.run();
system("pause");
return 0;
}