类成员函数作为回调使用示例
在编写C++项目时,经常需要将类的某个成员函数作为回调函数使用,这里总结两个方法:
1.使用lambda表达式,将类成员函数二次封装后使用,代码示例:
#include
#include
class A {
public:
A(std::function
{
}
int Run(int a)
{
return m_callback(a);
}
private:
std::functin
};
class B {
public:
B()
{
m_a = std::make_shared([&](int a){return this->callback(a);});
}
int callback(int a){
std::cout << a << std::endl;
}
private:
std::shared_ptr m_a;
};
2.使用std::bind,将类成员函数封装后使用,代码示例:
#include
#include
class A {
public:
A(std::function
{
}
int Run(int a)
{
return m_callback(a);
}
private:
std::functin
};
class B {
public:
B()
{
m_a = std::make_shared(std::bind(&B::callback, this, std::placeholders::_1));
}
int callback(int a){
std::cout << a << std::endl;
}
private:
std::shared_ptr m_a;
};