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


Автор: slater 25.5.2010, 18:09
помогите понять
вот цитирую из книжки: 

Код

Указатель на функцию может также быть типом возвращаемого значения. Объявление подобной функции требует определённого навыка. Начнём с той части объявления, которая содержит имя функции и список её формальных параметров. 

func(int, int)

Определим теперь тип указателя на функцию, который будет возвращаться функцией func(int, int)

char* (*)(int,int,int*,float)

Теперь остаётся правильно соединить обе части объявления
 
char* (*func(int, int))(int,int,int*,float);

Функция о двух целочисленных параметрах, возвращающая указатель на функцию, которая возвращает указатель на объект типа char и имеет собственный список формальных параметров вида: (int,int,int*,float)


не могу понять почему тут так char* (*func(int, int))(int,int,int*,float);
и как это интерпретировать

понимаю, что там есть комментарии, но все же неясно и непонятно почему получилась такая конструкция

кто поможет разобраться буду очень благодарен

Автор: maxim1000 25.5.2010, 19:57
Цитата(slater @  25.5.2010,  18:09 Найти цитируемый пост)
char* (*func(int, int))(int,int,int*,float);

ох не хотел бы я, чтобы в коде, с которым я работаю, было такое
ИМХО, гораздо лучше так:
Код

typedef char* (TReturnedFunction*)(int,int,int*,float);
TReturnedFunction func(int,int);


Автор: jonie 25.5.2010, 20:04
для понимания как это читать полезно "Правило право лево" (http://www.kalinin.ru/programming/cpp/17_07_00.shtml)
сам я его не помню, но знаю что оно есть 8))

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