C++回调实现方式

    xiaoxiao2025-02-16  13

    1。对象指针与函数指针:回调函数参数传入对象this和函数名称,否则只有全局函数或静态函数才能作为函数指针传递

    2。std::function和std::bind

    https://www.jianshu.com/p/f191e88dcc80

    C++参考手册中对function的介绍:

    std::function的实例能存储、复制及调用任何可调用的目标,包括:函数、lambda表达式、bind表达式或其他函数对象以及指向成员函数指针和指向数据成员指针,std::function包含在functional头文件中。

    std::function可以hold住任何可以通过“()”来调用的对象,包括:

    普通函数成员函数仿函数lambdastd::bind

    typedef  std::function<void(int, const char*)>  CallbackFunc;

    void SubThread::setCallback(CallbackFunc  cb_func1);

    void MainThread::executeFunc(int a, const char* s);

    sub_thread.setCallback(std::bind(&MainThread::executeFunc, this, std::placeholders::_1, std::placeholders::_2));

     

    最新回复(0)