使用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;
}