我有一个简单的要求,包括将函数指针传递给另一个函数,并在那里执行它们。 功能如下。
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编译器参数。
由于
答案 0 :(得分:3)
带有捕获的lambda表达式不能隐式转换为函数指针,也不能捕获它。
解决问题的方法:
drawPolarCurves
的签名更改为接受std::function<float(float)>
或模板参数