由于std::function
可以保存成员函数,因此它必须在某处存储指向对象实例的指针。
如何从保存成员函数的this
中获取std::function
指针?
答案 0 :(得分:8)
std::function
类型的对象包含可调用对象。指向成员函数的指针是一种可调用对象;可以使用相应类类型的参数以及它需要的任何其他参数来调用它。例如:
struct S {
void f(int);
};
std::function<void(S, int)> g(&S::f);
要调用它,请传递S
:
S s;
g(s, 3);
请注意,std::function
对象不保留S
个对象;只有当你调用它时,函数指针才会被绑定到一个对象。