![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
XandoX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2006 Где: Екатеринбург Репутация: нет Всего: нет |
Здравствуйте!
Есть такое наследование: ObjectData<-ObjectVisualInterface(он абстрактный) ObjectData - хранит некоторые данные ObjectVisualInterface - абстрактный класс определяющий интерфейс визуализации объекта, от него уже наследуются клссы визуализации для конкретных API (MFC, OpenGL, Win32) И хотелось бы создать класс Object который хранит указатель на ObjectVisualInterface. Но проблема в том, что ObjectVisualInterface содержит только функции обязательные, но конкретные реализации могут иметь еще и другие функции для своих нужд (например Устоновки цвета и т.д.) и что бы использовать эти функции можно перегрузить operator-> который возвращает укозатель на нужный класс реализации интерфейса. Вопрос собственно в том как определить тип конкретной реализации и привести к нему ObjectVisualInterface*, или может можно как-нибуть его сохранить что бы потом использовать его? Конечно можно было бы использовать шаблоны, но интересно: возможно ли такое без них? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
XandoX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2006 Где: Екатеринбург Репутация: нет Всего: нет |
typid возврашает type_info, ето нельзя использовать как тип, а к dynamic_cast нужен конкретный тип,
про что я собственно и спрашиваю. Дело в том что тип может быть создон познее, и не хочется переписывать код. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Это как раз легко если известны/ен производные/ый классы/с точнее можно исп-ть typelists+dynamic_cast, как результат - индекс в списке типов нужного типа вопрос в другом: в operator->() тип возвращаемого значения должен быть известен в compile-time, а здесь явно run-time -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
XandoX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2006 Где: Екатеринбург Репутация: нет Всего: нет |
тоесть без шаблонов не как? а где про typelists почитать можно? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
LuckLess |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 15.9.2004 Репутация: 1 Всего: 1 |
может так?
стиль аля COM
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
ИМХО, немного не то что просил XandoX вообще, как хочет сделать он по-моему нельзя -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
LuckLess |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 15.9.2004 Репутация: 1 Всего: 1 |
чуть более корректный вариант.
Добавлено @ 22:14
тогда я не понял чего хочет автор. ну operator нужный добавить е проблема. что не то то? )) Это сообщение отредактировал(а) LuckLess - 5.5.2006, 22:13 |
||||
|
|||||
XandoX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2006 Где: Екатеринбург Репутация: нет Всего: нет |
Дело в том, что я спрашивал про то можно ли как-нибуть динамически определить тип и использовать эти знание, что нибуть вроде typeid(я понимаю, что такого оператора нет), но только чтобы возвращал сам тип, а не информацию о нем. Ты же предложил вариант, когда мне все ровно нужен указатель на реализацию интерфейса, с этим-то кокрас и проблема, так как я не знаю что там за реализация ![]() Object строестя фабрикой для конкретной реализации, может можно в этот момент как-нибуть сохранить тип? Это сообщение отредактировал(а) XandoX - 6.5.2006, 08:02 |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
судя по всему XandoX-у надо что-то типа
думаю в такой вариации это невозможно -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
XandoX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2006 Где: Екатеринбург Репутация: нет Всего: нет |
MAKCim, ага именно, что-то типа.
Да я уже тоже до этого дошел, что не возможно. Спасибо за разэяснения |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |