#include <functional>
#include <iostream>
using namespace std;
//新建连接回调函数
typedef std::function<void(char * , int )>Callback;
// 定义类
class Class_1{
public:
void bind_test()
{
// 调用回调函数
// 输出的结果为:
//a: 123456789abcdefg!
//b: 12345678
m_callback( "123456789abcdefg!" , 12345678 );
};
void setCallback(Callback fnHandler)
{
m_callback=fnHandler;
}
Callback m_callback;
};
class Class_2{
public:
void print(char * a, int b)
{
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
}
void bind()
{
Class_1 test1;
// 在Class_2中绑定Class_2::print函数
auto foo = std::bind( &Class_2::print, this,
std::placeholders::_1,
std::placeholders::_2 );
// 设置Class_1回调
test1.setCallback( foo );
// Class_1运行绑定测试
test1.bind_test();
}
};
int main()
{
Class_2 test;
test.bind();
}
C++ 使用std::bind 绑定类和函数
于 2024-04-08 20:30:18 首次发布