Можно так(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено F8 24 ноября 2006 г. 14:55
В ответ на: Не совсем то. задача такая... отправлено <font color=gray>iit</font> 24 ноября 2006 г. 11:58

class TSimple
{
...
public:
void find_object(..., void(*ptr_func)(void *prt)); //-- ptr_func указатель на метод класса.
}

void TSimple::find_object(..., void(*ptr_func)(void *prt))
{
void *pObject; //Указатель на найденный объект, можно не void* а TSimple *
........................
pObject = ......
.........
prt_func(pObject);


}

class TFolder: public TSimple;
{
public:
static void load(void *_this);
}

void TFolder::load(void *_this)
{
TFolder *pFolder = (TFolder *)this;
................................
//Далше все операции с дпнными Folder выполняем через pFolder
}

class TObject: public TSimple;
{
public:
void save(void *_this);
void load(void *_this);
}

void TObject::save(void *_this)
{
TObject *pObject = (TObject *)_this;
....................................
}

void TObject::load(void *_this)
{
TObject *pObject = (TObject *)_this;
....................................
}


TFolder Folder, root;
TObject Object1, Object2;

...main...
{
...
// root содержит в себе Folder.
// Folder содержит в себе Object1 и Object2
...

Folder.find_object(TOBJECT,..., TObject::save); //-- Найти в папке Folder вложенные объекты типа TObject и при нахождении вызвать TObject::save, т.е. нашел Object1 должен произойти вызов Object1.save

Folder.find_object(TOBJECT,..., TObject::load); //-- Найти в папке Folder вложенные объекты типа TObject и при нахождении вызвать TObject::load, т.е. нашел Object1 должен произойти вызов Object1.load


root.find_object(TFOLDER,..., TFolder::load); //-- Найти в папке root вложенные объекты типа TFolder и при нахождении вызвать TFolder::load.

}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание