Каким образом можно вернуть указатель на функцию из функции?
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;
}
Комментариев нет:
Отправить комментарий