技术交流|C++lambda表达式 求助
3845
2022.02.11
发布于 中国

想问一下为什么下面代码中的lamda表达式在值传递的情况下还是可以修改a的值并输出。

class A {
private:
    int a = 1;
public: 
    int b = 1;
    void fun() {
        auto x1 = [=]() {b++; return ++a; };
        int a = x1();
        cout << a;
    }
};

int main() {
    A a;
    a.fun();
}

VS2019运行结果

2

但是我在主函数中写就会报错

int main() {
    int a;
    int b;
    auto x1 = [=]() {b++; return ++a; };//错误:表达式必须是可修改的左值
}
评论 (15)