C ++使用此指针与lambda函数内的绑定

时间:2016-02-24 05:59:50

标签: c++ lambda this bind

我使用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类)。 所以,我的问题是这里的问题是什么?我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

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

[this]按值捕获this指针 [&amp;]通过引用

捕获lambda正文中使用的所有自动变量

来自文档