Нередко бывает, что в программах нам надо сделать вызов заведомо неизвестной нам функции (либо метода). Для этого в Си используются указатели на функции, например, указатель на функцию
void A(){}
будет выглядеть:
void (Func*) ();
где Func — это указатель на функцию. Теперь мы можем ей назначить значение и вызвать ее:
Func = &A; Func(); //вызов функции A
Либо если функция у нас передана через универсальный си-указатель void*, то
void CalFunc(void *a) { ((void(*)())a)(); } CalFunc(&A);
Если мы используем C++ и метод, который мы хотим вызвать находится внутри класса:
struct A { void f(){cout << "f" << endl;} };
Тогда объявление указателя будет немного отличаться:
void (A::*Func)(); // указатель на метод в классе A, который ничего не возвращает, и ничего не принимает pf = &A::f //назначаем сам метод A a; (a.*Func)();от