Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Указатель на функцию


Автор: devmstr 21.3.2005, 21:22
Мне необходимо создать новый тип - указатель на заданную функцию.
Что я делаю не так
typedef void(*Effect)(HWND hwnd,RECT &Rect,int speed) Ef;

Одна из функций
void PE_WipeLeft(HWND hwnd,RECT &Rect,int speed);
Помогите пожайлуста!

Автор: Jcs 21.3.2005, 21:25
Код

typedef void(*pfunc)(HWND,RECT&,int); // определяется тип указателя на функцию

pfunc pfunc_instance = &PE_WipeLeft;  // инициализируется адресом конкретной функции

Автор: versus 21.3.2005, 22:00
у Стивена Прата есть очень простое и понятное объяснение объявления указателя на функцию:

Цитата
Итак, когда требуется объявить указатель на определенный тип функции, можно объявить функцию данного типа, а затем заменить имя функции выражение в форме (*pf), чтобы создать объявление указателя на функцию.


Таким образом какой бы сложной не была функция f, достаточно просто выписать ее объявление, поставить * перед названием функции и заключить имя функции вместе со звездочкой в скобки. Полученное имя можно использовать в конструкции typedef, как это описал Jcs, для удобной работы с типом указателя на функцию.

Автор: devmstr 22.3.2005, 07:25
Спасибо, большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)