Declare your function as follows:
void (*catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number))(char*, char *, int&) { pf(name_one, name_two, number); return pf; }
The syntax for functions returning functions is:
return-function-return-type (* function-name (parameter list)) (function-to-return-parameter-list)
Note: These declarations can be cumbersome to understand at a glance, use typedef when possible.
source share