C++ 函数回调

130 阅读1分钟

使用std::bind和std::function实现类成员函数回调

#include <iostream>
#include <functional>

typedef std::function<void(int)> Callback;

class A {
public:
    Callback m_callback;
    void setCallback(const Callback &cb) {
        m_callback = cb;
    }

    void process(int i) {
        for (int j = 0; j < 10; ++j) {
            m_callback(i + j);
        }
    }

    void output(int i) {
        std::cout << i << std::endl;
    }
};



int main() {
    A a;
    a.setCallback(std::bind(&A::output,a,std::placeholders::_1));
    a.process(10);
    return 0;
}