C++回调实现

#include 
#include 
#include 
using namespace std;
// 步骤1:定义回调函数指针类型
typedef void (*CallbackFunc)(int);

// 步骤2:创建函数,参数包括回调函数指针和其他所需参数
void performOperation(CallbackFunc callback, int value) {
    // 步骤3:执行回调函数
    callback(value);
}

// 步骤4:在主函数中注册回调函数
void myCallback(int value) {
    printf("callback,value is :%d\n", value);
}

int main() {
    // 注册回调函数
    CallbackFunc callback = myCallback;

    // 调用函数,并触发回调函数
    performOperation(callback, 10);

    return 0;
}

#include 
#include 
 
class MyTest{
public:
    MyTest() = default;
    void doCalc(){
        //干其他事,完了
        // 执行回调
        if(myCallBack!= nullptr){
            myCallBack(1,2);
        }
    }
 
    using callback_t = std::function;
 
    // 注册回调
    void setCallBackHandler(const callback_t &cb){
        myCallBack = cb;
    }
 
private:
    // 定义回调
    callback_t myCallBack;
};
 
// 回调函数
void handleCallBack(const int &a,const int &b){
    std::cout << "this is from callback handleCallBack"<(a), std::forward(b));
    });
 
    // 写法三
    t.setCallBackHandler([](auto &&a, auto &&b) {
        handleCallBack(std::forward(a), std::forward(b));
    });
#endif
    t.doCalc();
}

你可能感兴趣的:(c++,回调函数)