c++

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

小樊
158
2024-07-05 18:53:27
栏目: 编程语言

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

0
看了该问题的人还看了