我有一个简单的要求,它涉及将函数指针传递到另一个函数,并在那里执行它们。该功能如下所示。
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(画布&,Point2,浮()(浮),浮()()(浮))
我一遍又一遍地检查,一切似乎都是正确的,包括Ubuntu上的Eclipse编译器参数。
谢谢
发布于 2014-01-25 15:45:27
带有捕获的lambda表达式不能隐式转换为函数指针,如果没有捕获,它可以。
解决问题的方法:
drawPolarCurves的签名以接受std::function<float(float)>或模板参数https://stackoverflow.com/questions/21352582
复制相似问题