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


Автор: _Наталья_ 17.1.2007, 17:47
Здравствуйте, у меня маленький вопрос, может кто-то сможет мне помочь
У меня проект, в котором надо, цитирую "Класс будет тестирован при помощи внешней функции, принимающей два параметра - двоичное дерево и функцию обработки узлов". может не много коряво написала, просто перевожу, и не знаю точно как на русском будет.  В общем это двоичное дерево, имеющее кк ои называют левого и правого сына, сыновья, как и сам отец это узлы.
Хотелось бы узнать, может кто-то сможет помочь, что вообще означает эта передача данных в параметрах и как это делается  smile потому что нигде не могу найти, а после завтра надо сдавать.

Заранее благодарна!

Автор: Anikmar 17.1.2007, 17:55
Параметры - это то, что записывается в скобках после имени функции.
Например:

int Func1(void *Param1, int Param2); 
Функция Func1 принимает 2 параметра: указатель и целое число. В вашем случае имеется некое дерево - как-то организованное. Далее некая функция тестирования, которая должна что-то там тестировать

bool TestFun(void *pTree,TObrFun Fun);

Здесь pTree - указатель на дерево
Fun - функция проверки узла. Так как я понятия не имею что эта за функция - предположил, что она на входе получает указатель на узел
Тогда это можно представить так:
typedef bool (*)(void*) TObrFun;    // У меня всегда было с этим плохо, надеюсь правильно

т.е. TObrFun - это указатель на функцию, принимающую указатель и возвращающую bool

Автор: _Наталья_ 17.1.2007, 18:15
Цитата

bool TestFun(void *pTree,TObrFun Fun);

Здесь pTree - указатель на дерево
Fun - функция проверки узла. Так как я понятия не имею что эта за функция - предположил, что она на входе получает указатель на узел
Тогда это можно представить так:
typedef bool (*)(void*) TObrFun;    // У меня всегда было с этим плохо, надеюсь правильно


то есть если я правильно понимаю, то получается что мы декларируем указатель на функцию - (*), который будет называться TObrFun, а (void*) это параметры? а можно вместо воида к примеру Node*? или обязательно воид?

Огромное спасибо за ответ!  smile 

Автор: Anikmar 17.1.2007, 18:32
Цитата(_Наталья_ @  17.1.2007,  18:15 Найти цитируемый пост)
а можно вместо воида к примеру Node*? или обязательно воид?

Конечно можно - это я просто пример дал.


Автор: JackYF 17.1.2007, 18:45
Цитата(_Наталья_ @  17.1.2007,  18:15 Найти цитируемый пост)
а можно вместо воида к примеру Node*? или обязательно воид?


Конечно, можно и Node*

Автор: _stranger_ 17.1.2007, 18:46
Код

   typedef bool (*TObrFun)(void*);  // чуть поправил  :) 

Автор: JackYF 17.1.2007, 18:46
блин smile, засиделся, просмотрел пост...

Автор: Anikmar 17.1.2007, 18:48
_stranger_, У меня всегда были проблемы с правильным объявлением указателей на функцию  smile  Уже сам хотел править

Автор: _Наталья_ 17.1.2007, 18:51
Огромное вам всем спасибо!
Как сдам экзамен - напишу, это ли хотел учитель или нет  smile 

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