std::function
多态函数包装器
该实例可以存储、复制和调用任何可调用的目标:包括函数、lambda表达式、绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。
//A.class
tFunction = new TestFunction();
auto TSucFunction = [=](){
qDebug() << "Test std::function";
};
tFunction->SucHandle(TSucFunction);
//触发
void TestQT::TestPushButton()
{
tFunction->sendSuccessMsg();
}
//TestFunction.class
typedef std::function<void()> SucFunc;//定义类模板
public:
void SucHandle(SucFunc sucFunc);
void sendSuccessMsg();
protected:
SucFunc sucFunc_;
void TestFunction::SucHandle(SucFunc sucFunc)
{
sucFunc_ = sucFunc;
}
void TestFunction::sendSuccessMsg()
{
sucFunc_();
}