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