мне кажется, что правильно передать тип объекта можно через шаблон
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
Отправлено
yes
30 ноября 2006 г. 13:37
В ответ на:
Проблема в том, что на этапе компиляции мы можем не знать, какие классы будут созданы (+).
отправлено <font color=gray>homekvn</font> 29 ноября 2006 г. 20:29
наверно можно и через функцию, но как - сразу не могу сообразить.
Составить ответ
|||
Конференция
|||
Архив
Ответы
Да вот мне кажется (+)
—
homekvn
(30.11.2006 15:34
212.185.161.237
, 239 байт)
плохо, что указатель на функцию нужно в void * (ну или base_class *) превращать - это, имхо, всеравно что микроскопом тараканов давить...
—
yes
(30.11.2006 17:36
87.236.81.130
,
пустое
)
А зачем указатель на функцию в void* переводить? Вот typedef Base_Class* (*TBase_Class_CreateFunc)() - это уже другое дело. Только что в этом такого плохого? Универсальный подход.
—
homekvn
(30.11.2006 18:02
212.185.161.237
,
пустое
)
вся абсракция и защита данных летит в ж. вернут Вам указатель на зеленого крокодила, а Вы его в Base_Class*
—
yes
(30.11.2006 19:29
87.236.81.130
, 119 байт)
Ну-у-у! (+)
—
homekvn
(30.11.2006 20:37
212.185.161.237
, 436 байт)
Да и потом, даже если и вернут мне фигню, то (+)
—
homekvn
(30.11.2006 22:04
212.185.161.237
, 602 байт)
с темплэйтами все проверяется компилятором при сборке, собственно нафига еще все эти сложности С++ нужны
—
yes
(01.12.2006 13:03
87.236.81.130
, 144 байт)
Да ничего не получится у Вас с темплейтами. Если Вы класс собираетесь создать динамически (т.е. когда заранее неизвестно, экземпляр какого класса-наследника базового класса будет создан), то единственное решение - это передача указателя на функцию, возвращающую указатель на созданный класс. Как Вы эту функцию будете реализоваывать - в явном ли виде, или описывая ее через какой-нибудь класс, шаблон или еще что-нибудь - роли не играет. Но без этой функции ничего не получиится. (+)
—
homekvn
(01.12.2006 13:50
212.185.161.237
, 687 байт)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
Тема (обязательно):
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание