Здравствуйте, гость ( Вход | Регистрация )
|
ViGOur |
15.2.2013, 8:58
Сообщение
#1
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
Я создаю динамически объекты некоторых произвольных классов, родитель у них один, тип только разный.
Для вопроизведения ошибки набросал следующий код: В конструкции template <class T, int TYPE>, TYPE сделан для того, чтобы при инстанцировании различались типы объектов данного класса с задумкой на будущее... И данный тип передается динамически, во время выполнения программы. Тоесть, у меня из вне приходит некий tmpEnum, что в примере и я на основе него должен создать-получить объект mc4, но возникает ошибка указанная в коментарии при создании объекта mc4 . Как я понимаю это из-за того, что у меня переменная создается динамически (во время выполнения), а шаблон должен быть инстанцирован статически (во время компиляции). Поправьте меня если я ошибаюсь. И собственно вопрос, как сделать так, чтобы это работало и возможно ли это? Если это не возможно, то буду думать как сделать по другому... |
|
|
|
![]() |
|
ViGOur |
15.2.2013, 14:20
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
ssoft, ты был прав, паттерн Фабричный метод самое то,единственное к нему понадобился плюс, в виде рекурсивного аргумента шаблона (это подсказал мне Flex_Ferrum) и все заработало!
Вот окончательный вариант с учетом моего примера:
Сообщение отредактировал ViGOur - 19.2.2013, 16:53
Причина редактирования: Поправил, был старый вставил старый тест...
|
|
|
|
ViGOur Шаблон, динамическое значения параметра шаблона 15.2.2013, 8:58
ssoft Цитата(ViGOur @ 15.2.2013, 9:58) Как я по... 15.2.2013, 9:37
ViGOur Боюсь паттерн Фабричный метод здесь не поможет, де... 15.2.2013, 10:19
Iron Bug если это связано с типами, то тожно тупо в констру... 15.2.2013, 10:26
ViGOur Неа, в моем случае объекты p3 и p4 (ePudel и eTaks... 15.2.2013, 10:39
Алексей1153 имхо, виртуальное наследование спасёт )
class CDo... 15.2.2013, 11:20
ViGOur Цитата(Алексей1153 @ 15.2.2013, 12:20) им... 15.2.2013, 11:33
Алексей1153 Цитата(ViGOur @ 15.2.2013, 14:33) Это как... 15.2.2013, 11:45
ViGOur Пока я вижу выход, как я уже говорил:
Цитата(ViGOu... 15.2.2013, 11:45
Алексей1153 и ещё - при отладке с шаблонами можно запариться, ... 15.2.2013, 11:47
ViGOur Цитата(Алексей1153 @ 15.2.2013, 12:47) эт... 15.2.2013, 11:51
Алексей1153 ViGOur, я - за инкапсуляцию ))) 15.2.2013, 11:53
ViGOur да есть она там, но именно в данном случае она не ... 15.2.2013, 12:07
Алексей1153 it's enough of encapsulation! No more... 15.2.2013, 12:15
ViGOur Изменил код, так как по невнимательности вставил к... 15.2.2013, 14:55
Алексей1153 занимательно вышло, кстати, с точки зрения брейнфа... 15.2.2013, 18:25
lanz template <typename T>
CAnimal *class_creat... 18.2.2013, 10:01
ViGOur 1. Данный код только для класса CAnimal и производ... 18.2.2013, 12:12
lanz Все верно, но это из-за ограничения на то что долж... 18.2.2013, 14:11
ViGOur Цитата(lanz @ 18.2.2013, 15:11) Можно как... 18.2.2013, 15:09
lanz Можно так, с учетом пунктов 1, 3.
Вместо енума мож... 18.2.2013, 16:47
ViGOur Честно говоря, ИМХО особо ничего не поменялось... ... 19.2.2013, 10:08
lanz Цитата1. Данный код только для класса CAnimal и пр... 19.2.2013, 11:50
Iron Bug знаешь, я вообще перечитала твою тему с начала и п... 19.2.2013, 16:25
ViGOur Да я уже сдела что хотел и вылодил описание как...... 19.2.2013, 16:52
lanz Почему, ну почему-же не подходит?! 19.2.2013, 16:57
ViGOur Цитата(lanz @ 19.2.2013, 17:57) Почему, н... 19.2.2013, 20:56
lanz Ну да, но если сравнивать:
Раскрывающийся текстcla... 20.2.2013, 9:14
ViGOur Со всем в принципе согласен, но как я уже говорил ... 20.2.2013, 9:47
lanz Конечно надо использовать то что лучше подходит, к... 20.2.2013, 10:02![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 2.1.2026, 5:34 |