当我偶然发现以下答案时,我试图阅读并理解std::bind
:
我看到如下声明:
auto callback = std::bind(&MyClass::afterCompleteCallback, this, std::placeholders::_1);
我无法理解'this'指针的用法是什么,何时应该使用它? 'this'指针意味着当前的对象地址本身,所以它意味着'使用这个对象' - 如果是这样的话我如何在类之外使用相同的语句仍具有相同的含义?
答案 0 :(得分:5)
在班级之外,班级之外,这对使用std::bind
并不重要。必须使用其所属类的有效对象调用非静态成员函数。 std::bind
认为该对象是在可调用,简单和简单之后给出的第一个参数。
所以你可以在课堂上注意到这一点,并提供“当前”对象作为第一个绑定参数。
或者您可以在课外进行,如果成员可以访问,并提供某些对象(如@Scheff pointed out):
MyClass myClass;
using namespace std::placeholders;
auto callback = std::bind(&MyClass::afterCompleteCallback, &myClass, _1);
您甚至可以根本不选择绑定对象,并为其保留占位符:
MyClass myClass;
using namespace std::placeholders;
auto callback = std::bind(&MyClass::afterCompleteCallback, _1, _2);
callback(myClass, /*Other arg*/);