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


Автор: motoden 5.7.2012, 20:57
Доброго времени суток, товарищи!
Вот правила объявления указателя на функцию:
Цитата

В С, и С++ в частности, указатель на функцию с именем my_func_ptr, указывающий на функцию, принимающую в качестве аргументов int и char*, и возвращающую float, объявляется так:
Код

float (*my_func_ptr)(int, char*);
// Для большей удобочитаемости, я очень рекомендую использовать typedef.
// Особенно можно запутаться, когда указатель на функцию является аргументом
// функции.
// Тогда бы объявление выглядело так:
typedef float (*MyFuncPtrType)(int, char*);
MyFuncPtrType my_func_ptr;


Цитата спёрта http://www.rsdn.ru/article/cpp/fastdelegate.xml.
Товарищи, а как можно объявить указатель на функцию, принимающую в качестве аргумента указатель на функцию без использования typedef?

Автор: boostcoder 5.7.2012, 21:09
Код

void (*func_ptr)(void(*arg)());


Автор: motoden 5.7.2012, 21:22
Цитата(boostcoder @ 5.7.2012,  21:09)
Код

void (*func)(void(*func)());

Спасибо, boostcoder!
А почему в описании указателя на функцию, который стоит в качестве аргумента, нет никаких аргументов?
Собственно, эти аргументы и вызывали у меня непонимание...

Автор: boostcoder 5.7.2012, 21:24
Цитата(motoden @  5.7.2012,  21:22 Найти цитируемый пост)
почему в описании указателя на функцию, который стоит в качестве аргумента, нет никаких аргументов?

вы не просили smile
вот с аргументами:
Код

void (*func)(void(*func)(int, float));


Автор: motoden 5.7.2012, 23:34
а если я хочу объявить указатель на функцию, которая в качестве своего аргумента принимает указатель на функцию, которая в качестве своего аргумента принимает указатель на функцию, то это будет так:
Код

void (*func)(void (*func)(void (*func)()));

?

Автор: boostcoder 6.7.2012, 00:00
да.

Автор: borisbn 6.7.2012, 08:09
motoden, на RSDN не дураки сидят:
Цитата(motoden @  5.7.2012,  20:57 Найти цитируемый пост)
Для большей удобочитаемости, я очень рекомендую использовать typedef.

Откуда нелюбовь к typedef ? Ведь действительно проще читается, ведь код читается на порядки раз чаще, чем компилируется...

Автор: Randajad 6.7.2012, 13:36
Откуда такая любовь к указателям на функции?
Попытки эмулировать ООП на C? smile

Автор: boostcoder 6.7.2012, 13:49
Цитата(Randajad @  6.7.2012,  13:36 Найти цитируемый пост)
Попытки эмулировать ООП на C?

ага.
ООП на Си мне даже больше нравится чем ООП на С++ smile 

Автор: Randajad 6.7.2012, 13:50
Это, безусловно, epic win. Наблюдал такое в большом open-source проекте. smile

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