Wskaźniki do funkcji - o co chodzi?

0

Witam, mam pewien dylemat. Czytam aktualnie książkę Jerzego Grębosza Symfonia c++ i jestem w rozdziale o wskaźnikach do funkcji i tu taki wskaźnik wygląda np tak: int(*wskaz_fun)(); A jak wyszukałem w internecie o tych wskaźnikach to są tam wskaźniki
np. typedef void (foo)(void,int);, i nie rozumiem o co tu chodzi z tym typedef'em. Wytłumaczy mi ktoś o co tu chodzi?
PS. Z góry dzięki. :D

2

typedef pozwala zdefiniować typ, żeby później wygodnie użyć. Wyobraź sobie, że masz funkcję, która zwraca int i przyjmuje char jako parametr.
Może wyglądać np. tak:

int foo(char c) {}

Teraz jak chcesz mieć wskaźniki do takiej funkcji, to za każdym razem piszesz:

int (*funwsk1)(char) = foo;
int (*funwsk2)(char) = foo;

Nie jest to zbyt wygodne, szczególnie jak sygnatura funkcji może być dużo bardziej skomplikowana. Z typedef musisz to robić tylko raz:

typedef int (*funwsk)(char);
funwsk bar1 = foo;
funwsk bar2 = foo;
funwsk bar1000 = foo;
0

Można użyć std::function który jest bardziej czytelny (ale trochę wolniejszy) niż zwykłe wskaźniki.

http://en.cppreference.com/w/cpp/utility/functional/function

0

A to po kolei te rozdziały czytasz? W rozdziale o typach (3.12, 73str) jest to opisane. Wydanie 3 rozszerzone

1 użytkowników online, w tym zalogowanych: 0, gości: 1