C++将此指针与 lambda 函数中的绑定一起使用

C++ using this pointer with bind inside lambda function

本文关键字:绑定 一起 函数 指针 lambda C++      更新时间:2023-10-16

我正在使用std::bind 在lambda函数内绑定成员函数,在某些代码中如下所示:

class A {
...
...
public:
   foo(function<void()> f) {
   }
...
...
};
class B {
...
...
A a;
public:
   B_function_1(){
      a.foo([](){
         some_other_function(bind(&B::B_function_2, this, _1,_2));
   }
...
private:
   B_function_2(arg1, arg2) {
   ...
   }
};

我的问题是当我尝试编译时出现此错误:

error: ‘this’ was not captured for this lambda function

在我的例子中,这是指当前的类(B类)。所以,我的问题是这里有什么问题?我错过了什么?

谢谢。

要在 lambda 中捕获 this 指针,请使用a.foo([this]()

[this] 按值捕获此指针[&] 通过引用捕获 lambda 主体中使用的所有自动变量 ODR

从文档