//std::bind的使用
#include<iostream>
#include<functional>
using namespace std;
int My_Callback(int x,int y) {
return x+y+100;
}
int main() {
int x{0};
int y{0};
cin>>x>>y;
auto Callback= std::bind(&My_Callback,x,y);
std::cout<<Callback()<<std::endl;
return 0;
}
作回调使用
#include<iostream>
#include <functional>
using namespace std;
class My_Callback{
public:
int add(int x,int y){
return x+y+other;
}
int other{100};//函数对象可以保存自己的属性
};
int main() {
int x{0};
int y{0};
cin>>x>>y;
My_Callback Callback;
//需要调用成员方法add,所以必须传this(即Callback)
std::function<int(int,int)> callback = std::bind(&My_Callback::add,&Callback,std::placeholders::_1, std::placeholders::_2); //std::placeholders::_1, std::placeholders::_2即为占位符,表示有两个参数
//等价于 std::function<int(int,int)> callback=[&Callback](int x,int y){return Callback.add(x,y);};
std::cout<<callback(x,y)<<std::endl;
/*
也可直接绑定参数即:
std::function<int()> callback = std::bind(&My_Callback::add,&Callback,x,y);
//等价于 std::function<int()> callback=[&Callback,x,y](){return Callback.add(x,y);};
std::cout<<callback()<<std::endl;
*/
return 0;
}