原有方法
struct TEST {
void trace() {
cout << "TRACE" << endl;
}
};
void (TEST::*func)() = &TEST::trace;
TEST t;
(t.*func)();
((&t)->*func)();
用法1:
struct TEST {
void trace() {
cout << "TRACE" << endl;
};
} t;
function<void()> trace = std::bind(&TEST::trace,&t);
trace();
可以传递指针或者引用
用法2:
struct TEST {
int add(int a,int b) {
return a + b;
};
} t;
function<int()> add = std::bind(&TEST::add,t,1,1);
cout << "ADD:" << add() << endl;
使用默认参数
用法3:
struct TEST {
int add(int a,int b) {
return a + b;
};
} t;
function<int(int, int)> add = std::bind(&TEST::add,t,std::placeholders::_1,std::placeholders::_2);
cout << "ADD:" << add(1,2) << endl;
使用占位符 placeholders 占位符来保留参数。