溫馨提示×

C++中l(wèi)ambda表達式如何捕獲成員變量

c++
小樊
213
2024-07-05 18:53:27
欄目: 編程語言

在C++中,lambda表達式可以通過捕獲列表來捕獲外部變量。如果要捕獲成員變量,可以使用this指針來捕獲當(dāng)前對象的所有成員變量。示例如下:

#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函數(shù)內(nèi)部的局部變量localVar。在lambda表達式中,使用[this]來捕獲當(dāng)前對象的所有成員變量,使用[localVar]來捕獲局部變量localVar。

0