C++中如何返回Lambda的返回值而非Lambda本身?
解决方法
你的问题在于直接返回了Lambda对象,而非调用它获取返回值。要返回Lambda的计算结果,必须调用这个Lambda表达式并传入它所需的参数。
修改后的代码示例
如果要返回固定参数的Lambda结果:
int someFunction(){ // 调用Lambda并传入参数,返回其计算结果 return [](int a){ return a; }(10); // 传入10,最终返回10 }
如果需要动态传入参数,可以将参数作为someFunction的输入:
int someFunction(int input){ // 使用函数参数作为Lambda的输入 return [](int a){ return a; }(input); }
原理说明
原代码中,[](int a){ return a; }是一个匿名函数对象,类型并非int,直接返回会触发类型不匹配的编译错误。只有在Lambda后加上(参数)完成调用,整个表达式的结果才是Lambda的返回值(此处为int类型),才能与someFunction的返回类型匹配。
内容的提问来源于stack exchange,提问作者rmoss3475
相关产品推荐
相关产品推荐

