Typ wskaźnika funkcji powrotu
Często znajduję potrzebę pisania funkcji, które zwracają wskaźniki funkcji. Kiedykolwiek to robię, podstawowym formatem, którego używam, jest:
typedef int (*function_type)(int,int);
function_type getFunc()
{
function_type test;
test /* = ...*/;
return test;
}
Jednak może się to okazać kłopotliwe, gdy mamy do czynienia z dużą liczbą funkcji, więc chciałbym nie deklarować typedef dla każdego (lub dla każdej klasy funkcji)
Mogę usunąć typedef i zadeklarować zmienną lokalną zwróconą w funkcji jako:int (*test)(int a, int b);
sprawiając, że ciało funkcji wygląda tak:
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
ale nie wiem, co ustawić dla typu powrotu funkcji. Próbowałem:
int(*)(int,int) getFunc()
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
ale zgłasza błąd składniowy. Jak zadeklarować typ powrotu dla takiej funkcji bez deklarowania typedef dla wskaźnika funkcji. Czy to możliwe? Zauważ również, że zdaję sobie sprawę z tego, że deklarowanie typedefów byłoby czystsze, jednak dla każdej z funkcji bardzo uważam, aby mój kod był tak czysty i łatwy do naśladowania, jak to tylko możliwe. Powodem, dla którego chciałbym wyeliminować typedefs, jest to, że są one często używane tylko do deklarowania funkcji pobierania i dlatego wydają się zbędne w kodzie.