Шаблон, динамическое значения параметра шаблона, параметр не является типом |
Здравствуйте, гость ( Вход | Регистрация )
Шаблон, динамическое значения параметра шаблона, параметр не является типом |
ViGOur |
15.2.2013, 8:58
Сообщение
#1
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Я создаю динамически объекты некоторых произвольных классов, родитель у них один, тип только разный.
Для вопроизведения ошибки набросал следующий код:
В конструкции template <class T, int TYPE>, TYPE сделан для того, чтобы при инстанцировании различались типы объектов данного класса с задумкой на будущее... И данный тип передается динамически, во время выполнения программы. Тоесть, у меня из вне приходит некий tmpEnum, что в примере и я на основе него должен создать-получить объект mc4, но возникает ошибка указанная в коментарии при создании объекта mc4 . Как я понимаю это из-за того, что у меня переменная создается динамически (во время выполнения), а шаблон должен быть инстанцирован статически (во время компиляции). Поправьте меня если я ошибаюсь. И собственно вопрос, как сделать так, чтобы это работало и возможно ли это? Если это не возможно, то буду думать как сделать по другому... |
|
|
lanz |
19.2.2013, 11:50
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата 1. Данный код только для класса CAnimal и производных от него классов. ( я понимаю, что можно поправить, но все же! ) Теперь шаблон. Цитата 2. При добавлении типа в CEnumClass::eEnum, тебе так же нужно будет добавлять прототип функции в массив creators. (если забыл добавить, то ... ) Вместо этого регистрация (=1 действие), но тут никуда не дется, если берем за референс реализацию с рекурсивными шаблонами, то там придется добавлять enum + делать полную специализацию CClass (=2 действия) Два действия забыть проще .) Цитата 3. Ты должен будешь соблюдать порядок типов в CEnumClass::eEnum и прототипов функций в массиве creators. (если порядок другой, то ...) При регистрации порядок неважен. В задаче от яндекса то же, только в профиль. Немного интересней, что зависимые от языка вещи находятся в двух местах, но это непринципиально, сюда тоже можно сунуть фабрику. Плюсы - только уменьшеие количества мест, которые нужно исправить при переделке и как следствие повышение багоустойчивости. Минусы - усложненная архитектура. Вообще switch неплох, когда у нас участвует менее 6-7 элементов. Поэтому при прочих равных, я бы максимум убрал второй switch. Как то так. Раскрывающийся текст
|
|
|
Текстовая версия | Сейчас: 30.1.2025, 0:58 |