如何从std :: function获取此指针?

时间:2013-04-01 16:53:48

标签: c++ this std-function this-pointer

由于std::function可以保存成员函数,因此它必须在某处存储指向对象实例的指针。

如何从保存成员函数的this中获取std::function指针?

1 个答案:

答案 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个对象;只有当你调用它时,函数指针才会被绑定到一个对象。