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

寻技术 C/C++编程 2024年12月18日 10

在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。

关闭

用微信“扫一扫”