Часто я нахожу необходимость писать функции, возвращающие указатели на функции. Всякий раз, когда я это делаю, основной формат, который я использую:
typedef int (*function_type)(int,int);
function_type getFunc()
{
function_type test;
test /* = ...*/;
return test;
}
Однако это может стать громоздким при работе с большим количеством функций, поэтому я бы не хотел объявлять typedef для каждого из них (или для каждого класса функций)
Я могу удалить typedef и объявить локальную переменную, возвращаемую функцией:
int (*test)(int a, int b);
, создавая тело функции следующим образом:
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
но тогда я не знаю, что задать для возвращаемого типа функции. Я пробовал:
int(*)(int,int) getFunc()
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
но это сообщает о синтаксической ошибке. Как объявить возвращаемый тип для такой функции без объявления typedef для указателя функции. Возможно ли это? Также имейте в виду, что мне известно, что было бы проще объявить typedefs, однако для каждой из функций я очень осторожен, чтобы мой код был таким же чистым и легким, насколько это возможно. Причина, по которой я хотел бы исключить typedefs, заключается в том, что они часто используются только для объявления функций поиска и поэтому кажутся избыточными в коде.