gpt4 book ai didi

c++ - 为什么我的成员函数中的 lambda 表达式的主体没有被执行?

转载 作者:太空狗 更新时间:2023-10-29 23:35:56 25 4
gpt4 key购买 nike

最近在研究lambda表达式,下面的lambda代码让我大吃一惊:

#include <iostream>

class lambda_this_test
{
private:
int mNumber;
public:
lambda_this_test()
{
mNumber = 11;
};
void print_member()
{
//lambda expression
[this]{mNumber = 12; std::cout<< "mNumber = \n"<<mNumber<<std::endl;};
}
};

int main()
{
lambda_this_test testClass;

testClass.print_member();
}

执行时看不到任何打印,看来lambda表达式的body根本没有执行,然后我用gdb证明了这一点,因为print_member()函数中没有代码。

请问我使用lambda有什么问题吗?

最佳答案

看来你忘了执行你的 lambda 表达式;你应该添加括号:

[this]{mNumber = 12; cout<< "mNumber = \n"<<mNumber<<endl;} ();
// ^^

也就是下面的语句:

[this]{mNumber = 12; cout<< "mNumber = \n"<<mNumber<<endl;};

只声明一个 lambda 表达式。或者,您可以这样写:

auto lambda = [this]{mNumber = 12; cout<< "mNumber = \n"<<mNumber<<endl;};

lambda();

关于c++ - 为什么我的成员函数中的 lambda 表达式的主体没有被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com