C++中lambda表达式如何捕获成员变量

avatar
作者
猴君
阅读量:0

在C++中,lambda表达式可以通过捕获列表来捕获外部变量。如果要捕获成员变量,可以使用this指针来捕获当前对象的所有成员变量。示例如下:

#include <iostream>  class MyClass { public:     MyClass(int value) : m_value(value) {}      void testLambda() {         int localVar = 5;          auto lambda = [this, localVar]() {             std::cout << "Member variable m_value: " << m_value << std::endl;             std::cout << "Local variable localVar: " << localVar << std::endl;         };          lambda();     }  private:     int m_value; };  int main() {     MyClass obj(10);     obj.testLambda();      return 0; } 

在上面的示例中,lambda表达式捕获了MyClass对象的成员变量m_value和testLambda函数内部的局部变量localVar。在lambda表达式中,使用[this]来捕获当前对象的所有成员变量,使用[localVar]来捕获局部变量localVar。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!