c++ - 如何从 std::function 获取这个指针?

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

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

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

最佳答案

std::function 类型的对象包含一个可调用对象。指向成员函数的指针是一种可调用对象;可以使用适当类类型的参数以及它需要的任何其他参数来调用它。例如:

struct S {
    void f(int);
};
std::function<void(S, int)> g(&S::f);

要调用它,传递一个 S 类型的对象:

S s;
g(s, 3);

请注意,std::function 对象包含S 对象;只有当您调用它时,函数指针才会绑定(bind)到一个对象。

关于c++ - 如何从 std::function 获取这个指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15747669/

相关文章:

c++ - 带阻塞套接字的 SSL_accept

C++:循环中 vector 的问题

c++ - 如果返回 vector 的一项,则 lambda 表达式的返回类型是什么?

c++ - 是否可以直接接受 `std::bind` 的输出作为值,而不转换为 std::function?

c++ - 带有自定义分配器但没有其他参数的 std::function 构造函数有什么意义?

c++ - 在 C++ 中使用关系运算符

c++ - 消除 QLabel 顶部的间隙

javascript - javascript 中的递归函数、setTimeout 和 'this' 关键字

javascript - 如何柯里化(Currying) jQuery 方法——哪个 `this` 值将传递 jQuery 对象?

javascript - 如何检查对象是否为 node.js 流实例?