在C++中,lambda表達式默認是無法捕獲this指針的。如果需要在lambda表達式中使用this指針,需要顯式地將this指針傳遞給lambda表達式,可以通過在lambda表達式的參數列表中使用this指針進行捕獲。
例如,在一個類的成員函數中定義一個lambda表達式,并捕獲this指針:
class MyClass {
public:
void foo() {
auto lambda = [this]() {
// 在lambda表達式中使用this指針
this->bar();
};
lambda();
}
void bar() {
std::cout << "Hello from bar" << std::endl;
}
};
在上面的例子中,lambda表達式捕獲了this指針,并在lambda表達式中調用了該類的成員函數bar()。這樣就可以在lambda表達式中訪問該類的成員變量和成員函數。