【问题标题】:Use Lambda As Argument In Function [duplicate]在函数中使用 Lambda 作为参数 [重复]
【发布时间】:2020-11-09 13:45:44
【问题描述】:
void f(int a, void(*b)(int))
{
   b(a);
}

int main()
{
  int a = 5;
  int b = 6;

  f(10, [a, b](int x) { cout << a+b+x; });

  return 0;
}

如果我不使用 'a' 和 'b' 变量,一切正常,否则,C++ 返回:

错误:无法将 'main()::' 转换为 'void (*)(int)''

注意:初始化'void f(int, void (*)(int))'的参数2

【问题讨论】:

    标签: c++ function lambda


    【解决方案1】:

    Lambdas 无法转换为函数指针。

    您可以改用std::function 作为参数类型。例如

    void f(int a, std::function<void(int)> b)
    {
       b(a);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 2016-01-04
      • 2011-12-27
      • 2021-08-30
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2013-03-19
      相关资源
      最近更新 更多