【发布时间】:2017-11-28 13:09:46
【问题描述】:
当我偶然发现以下答案时,我试图阅读和理解 std::bind:
我看到一个如下声明:
auto callback = std::bind(&MyClass::afterCompleteCallback, this, std::placeholders::_1);
我无法理解“this”指针的用途以及何时应该使用它? 'this' 指针表示当前对象地址本身,所以它意味着'使用这个对象' - 如果是这样,我如何在类外使用相同的语句仍然具有相同的含义?
【问题讨论】:
-
当您提供指向(可能是非静态的)成员函数
&MyClass::afterCompleteCallback的指针时,没有对象就无法调用它。因此,还提供了对象指针:this。如果你想在类之外构造bind,只需插入指向相应对象的指针而不是this。例如。对于MyClass myClass;,它应该是&myClass。 -
之所以有效,是因为在 C++ 中,pointer->afterCompleteCallback(p1) 与 MyClass::afterCompleteCallback(pointer, p1); 相同。只是编译器不允许直接使用。