带返回值的C ++匿名函数

时间:2014-01-25 15:41:02

标签: c++ eclipse ubuntu return-value anonymous-function

我有一个简单的要求,包括将函数指针传递给另一个函数,并在那里执行它们。 功能如下。

void drawPolarCurves(Canvas &cnv, Point2 center, float (* fx)( float ), float (* fy)( float ));

我尝试将匿名函数作为参数传递,如下所示。

void drawMyShape(Canvas &cnv, Point2 center, float width, float height)
{
    drawPolarCurves(cnv, center,
            [&width](float x)-> float { return x * width; },
            [&height](float x)-> float { return x * height; }
            );
}

这会产生以下错误:

无效的参数' 候选人是: void drawPolarCurves(Canvas&,Point2,float()(float),float()(float)) “

我一次又一次地检查,一切似乎都是对的,包括Ubuntu上的Eclipse编译器参数。

由于

1 个答案:

答案 0 :(得分:3)

带有捕获的lambda表达式不能隐式转换为函数指针,也不能捕获它。

解决问题的方法:

  • 不要在lambdas中捕获值
  • drawPolarCurves的签名更改为接受std::function<float(float)>或模板参数
相关问题