【1】注册回调函数的地方(上层)
TestManager.cpp:
//ITEST:Test类的单例
ITEST.RegNotifyCb(std::bind(&TestManager::OnNotify, this, std::placeholders::_1));
//或test->RegNotifyCb(std::bind(&TestManager::OnNotify, this, std::placeholders::_1));
void TestManager::OnNotify(int param)
{
// ...
}
【2】调用回调的地方(下层)
Test.cpp:
void Test::RegNotifyCb(const NotifyCb &cb)
{
mNotifyCb = cb;
}
void Test::Notify(int param)
{
if(mNotifyCb) {
mNotifyCb(param);
}
}
Test.h:
void RegNotifyCb(const NotifyCb &cb);
void Notify(int param);
using NotifyCb = std::function<void(int)>;
NotifyCb mNotifyCb { nullptr };