【发布时间】:2016-11-22 05:16:12
【问题描述】:
考虑以下(简化的)示例,其中两个 lambda 函数相互调用,其中一个还接受另一个函数作为参数。我需要使用 lambda 函数,因为这些函数还会在彼此之间传递经过修改的嵌套函数。
#include <iostream>
using namespace std;
auto f = [](int n, auto h)
{
if(n >= 5) return n;
cout << "h is some function " << h(4.0) << end;
auto func = [](int m){ return m*h(m); }; // some nested function
return g(n+1,func);
};
auto g = [](int n, auto h)
{
if(n >= 5) return n;
cout << "h is some function " << h(5.0) << end;
auto func = [](int m){ return m*h(m); }; // some nested function
return f(n+1,func);
};
int main()
{
auto initial_function = [](int m){ return m*m; };
f(1, initial_function);
return 0.0;
}
这将返回通常的错误未声明的标识符'g',这是由于没有头文件而导致的。所以我的问题是:声明两个 lambda 函数的正确语法是什么?
【问题讨论】:
-
写老无聊的命名函数。
-
您更新的问题仍然是关于 lambdas 的问题,在这种情况下完全不需要。答案仍然是“不要使用 lambdas”。
-
另外,如果您正在与特定评论者交谈,请像这样标记他们的名字:@user56643,否则他们可能会或可能不会收到有关您的 cmets 的警报,
-
谢谢@n.m。和@ildjarn,你当然是对的。用户@Mzhr 最后是我的问题。我不知道如何在“非 lambda 函数”之间传递函数,这就是我最初坚持使用 lambda 的原因。我会避免过多地抽象我的问题;)
标签: c++ c++11 lambda c++14 header-files