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