#include <iostream>
class CServer
{
public:
typedef void (CServer::*FN_CALLBACK)(void);
CServer()
{
m_pCallback = NULL;
m_fnCallback = NULL;
}
void BindCallback(void* pCallback, FN_CALLBACK fnCallback)
{
m_pCallback = pCallback;
m_fnCallback = fnCallback;
}
void EmitCallback(void)
{
if (m_pCallback && m_fnCallback)
(((CServer*) m_pCallback)->*m_fnCallback)();
}
private:
void* m_pCallback;
FN_CALLBACK m_fnCallback;
};
class CClient
{
public:
void OnCallback(void)
{
std::cout << "CClient::OnCallback function is invoke." << std::endl;
}
void Demo()
{
m_iCallback.BindCallback(this, (CServer::FN_CALLBACK) &CClient::OnCallback);
m_iCallback.EmitCallback();
}
private:
CServer m_iCallback;
};
int main(int argc, char* argv[])
{
CClient().Demo();
system("pause");
return 0;
}
CPP类回调函数示例
最新推荐文章于 2024-09-25 08:45:09 发布