gpt4 book ai didi

c++ - 如何将 Lambda 函数作为参数传递

转载 作者:行者123 更新时间:2023-12-01 14:48:07 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Passing capturing lambda as function pointer

(9 个回答)


去年关闭。




我最近在使用 C++ 时遇到了一些问题,基本上是这样的:

在函数内部(比如 int main),我声明了一个变量 Y = 5,并且我有这个 lambda 函数,它接收一个值并将 Y 相加;

我的问题是:我需要将此 lambda 函数传递给一个已经存在的函数,以便可以在另一个函数内部调用它。

我尝试了几件事,但都没有按我的预期工作(有些甚至没有工作):

double receives( double (*f)(double) )
{
return f(5);
}

int main()
{

int y = 5;

auto fun = [](double x) {
return x + y;
};

cout << receives(&fun);

return 0;
}

另一个问题是我无法更改我的接收函数签名,由于代码的其余部分,参数必须是 double (*f)(double)。我还需要 lambda 函数来传递 y 值,而不使用其他参数。

任何人都可以帮助我吗?

最佳答案

例如使用 std::function

#include <iostream>
#include <functional>

double receives( const std::function<double( double )> &f )
{
return f( 5 );
}

int main()
{
int y = 5;

auto fun = [y](double x)
{
return x + y;
};

std::cout << receives( fun ) << '\n';

return 0;
}

关于c++ - 如何将 Lambda 函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61329542/

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