Wskaźnik na funkcję w C++

W C++ wskaźnik na funkcję ma specyficzną budowę trudną do zapamiętania. Na forum portalu 4programmers pojawiła się recepta użytkownika Azarien na to, jak można sobie ułatwić utrwalenie w pamięci budowy owych wskaźników:

  • tworzymy nagłówek normalnej funkcji
  • void foo(void *ptr, int size)

  • przy czym nazwy parametrów pomijamy
  • void foo(void*,int)

  • następnie nazwę funkcji (stanie się ona nazwą zmiennej lub parametru) poprzedzamy gwiazdką i bierzemy w nawias
  • void (*foo)(void*,int)

  • jeżeli foo ma być zmienną, zakańczamy średnikiem
  • void (*foo)(void*,int);

  • jeżeli parametrem funkcji, po prostu wklejamy w listę parametrów
  • void Function(void (*foo)(void*,int)) {}

  • jeżeli nazwą nowego typu, poprzedzamy typedefem
  • typedef void (*foo)(void*,int);

  • a jeżeli chcemy mieć parametr funkcji jako sam typ bez nazwy parametru, w nazwie zostaje nawias i gwiazdka
  • void Function(void (*)(void*,int));