Страницы

Поиск по вопросам

среда, 27 марта 2019 г.

Возврат указателя на функцию

Каким образом можно вернуть указатель на функцию из функции?
void f0(char) {}
void (*)(char) f1() {return f0;} // В возвращаемом типе ошибка
Можно объявить auto возвращаемым типом, но так не интересно!


Ответ

Нашел ответ на англоязычном SO.
В вашем случае правильное определение для f1 будет:
void (*f1())(char) { return f0; }
В общем случае сигнатура должна быть такая:
возвращаемое_значение_возвращаемой_функции (*имя_функции(типы_параметров_функции))(типы_параметров_возвращаемой_функции);
Вообще, не рекомендую использовать такой синтаксис, т.к. сигнатура получается нечитаемой. Лучше создать аллиас на возвращаемый тип с помощью using или typedef
using Function = void (*)(char);
Function f1() { return f0; }

Комментариев нет:

Отправить комментарий