5

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

如何从包含成员函数this的 a 中获取指针?std::function

4

1 回答 1

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

于 2013-04-01T17:05:23.610 回答