gpt4 book ai didi

c++ - this 指针在 std::bind 中的用法

转载 作者:太空宇宙 更新时间:2023-11-04 15:32:19 26 4
gpt4 key购买 nike

当我偶然发现以下答案时,我正在尝试阅读和理解 std::bind:

Usage of std::bind

我看到如下语句:

auto callback = std::bind(&MyClass::afterCompleteCallback, this, std::placeholders::_1);

我无法理解“this”指针的用法以及何时应该使用它? “this”指针表示当前对象地址本身,因此它意味着“使用此对象”——如果是这样,我如何在类外使用相同的语句仍然具有相同的含义?

最佳答案

类内、类外,这对 std::bind 的使用并不重要。非静态成员函数必须用它所属的类的有效对象调用。 std::bind 认为该对象是它在可调用对象之后给出的第一个参数,简单明了。

因此您可以在类中按照您的说明进行操作,并提供“当前”对象作为第一个绑定(bind)参数。

或者你可以在类之外进行,如果成员是可访问的,并提供一些对象(如@Scheff pointed out):

MyClass myClass; 
using namespace std::placeholders;
auto callback = std::bind(&MyClass::afterCompleteCallback, &myClass, _1);

您甚至可以选择完全不绑定(bind)该对象,并为其保留一个占位符:

MyClass myClass; 
using namespace std::placeholders;
auto callback = std::bind(&MyClass::afterCompleteCallback, _1, _2);

callback(myClass, /*Other arg*/);

此外,尽管您标记了 .随着 中对 lambda 的更改, 真的没有理由再使用 std::bind 了。

关于c++ - this 指针在 std::bind 中的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com