当前位置: 首页 > 知识库问答 >
问题:

在函数中使用Lambda作为参数[重复]

林祯
2023-03-14
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 f(int, void(*)(int))'的参数2

共有1个答案

安聪
2023-03-14

带有捕获的Lambdas无法转换为函数指针。

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

void f(int a, std::function<void(int)> b)
{
   b(a);
}
 类似资料:
  • 我是Kotlin的新手,很难理解下面的代码 所以这个函数叫做,它的输入参数是一个名为的函数,它是

  • ...基本上是代码重复。是否有一种方法可以将函数作为方法参数传递,以优化这一点,使两个筛选条件都有一个方法?

  • 我是java / kotlin函数式编程的新手,并做了一些练习。只是想知道如何在调用它时传递lambda的参数。例如,在这里调用一些方法,我需要传递一个Int参数。 如何做到这一点?答案可能非常简单,我只是没有在任何地方找到它,在文档中只有列表的例子,在这种情况下答案是清楚的:

  • 我需要制作两个lambda函数,一个用参数调用另一个,被调用的函数将参数打印出来。我很难让它工作:第一个函数: 请告知我应该在被调用函数中输入什么代码才能接收参数“hello Jenny”?非常感谢。

  • 问题内容: 我想为MySortedSet调用一个构造函数,该构造函数将Comparator c作为参数。我该如何修改呢? 问题答案: 如果要传递其他捕获的值作为参数,则不能使用方法引用。您将不得不使用lambda表达式来代替: =>