You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022中C++ Lambda表达式编译报错Error C2679求助

解决C++ Lambda表达式编译错误并实现变量相加功能

错误原因

编译错误Error C2679的根源是直接用cout输出Lambda对象lm_add,C++标准输出流std::ostream没有定义针对Lambda类型的operator<<运算符,编译器无法识别该操作,因此报错。

修正方案与实现代码

要实现指定变量k和l的相加功能,结合Lambda的特性,提供两种可行的修正方式:

方式一:Lambda捕获外部变量直接计算

让Lambda通过捕获列表获取k和l,无需额外传参,直接返回两者的和:

#include<iostream>
using namespace std;

int main()
{
  int k = 98;
  int l = 23;

  // 捕获k和l,返回两者之和
  auto lm_add = [k,l]() {
    return k + l;
  };

  // 调用Lambda获取结果后输出
  cout << "addition using lambda : " << lm_add() << endl;

  return 0;
}

方式二:Lambda通过参数接收变量计算

保持Lambda的参数设计,调用时传入k和l完成计算:

#include<iostream>
using namespace std;

int main()
{
  int k = 98;
  int l = 23;

  // 接收两个int参数,返回它们的和
  auto lm_add = [](int i, int j) {
    return i + j;
  };

  // 传入k和l调用Lambda,输出结果
  cout << "addition using lambda : " << lm_add(k, l) << endl;

  return 0;
}

说明

  • 方式一中,Lambda通过捕获列表[k,l]绑定外部变量,调用时只需lm_add()即可得到计算结果。
  • 方式二中,Lambda不依赖外部捕获,完全通过参数接收输入,灵活性更高,可用于任意两个int值的相加。

内容的提问来源于stack exchange,提问作者P N Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:42:32