У меня есть простое требование, которое включает передачу указателей функций на другую функцию и их выполнение. Функция приведена ниже.Функция C++ Anonymous с возвращаемым значением
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; }
);
}
Это производит следующее сообщение об ошибке:
Недопустимые аргументы " Кандидаты: недействительными drawPolarCurves (Canvas &, Point2, поплавок () (с плавающей точкой), поплавок () (флоат)) '
Я проверил снова и снова, и все кажется правильным, включая аргументы компилятора Eclipse на Ubuntu.
Благодаря
Ваш вызывающий код Безразлично» t содержит анонимные функции. Он содержит лямбда-выражения. –
@ Kerrek-SB: Спасибо, чтобы указать на это. Я никогда не использовал лямбда-выражения до ... – inam101