Шаблон, динамическое значения параметра шаблона, параметр не является типом |
Здравствуйте, гость ( Вход | Регистрация )
Шаблон, динамическое значения параметра шаблона, параметр не является типом |
ViGOur |
15.2.2013, 11:51
Сообщение
#11
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
Алексей1153 |
15.2.2013, 11:53
Сообщение
#12
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
ViGOur, я - за инкапсуляцию )))
|
|
|
ViGOur |
15.2.2013, 12:07
Сообщение
#13
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
да есть она там, но именно в данном случае она не нужна!
|
|
|
Алексей1153 |
15.2.2013, 12:15
Сообщение
#14
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
it's enough of encapsulation! No more! ))
|
|
|
ViGOur |
15.2.2013, 14:20
Сообщение
#15
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
ssoft, ты был прав, паттерн Фабричный метод самое то,единственное к нему понадобился плюс, в виде рекурсивного аргумента шаблона (это подсказал мне Flex_Ferrum) и все заработало!
Вот окончательный вариант с учетом моего примера:
Сообщение отредактировал ViGOur - 19.2.2013, 16:53
Причина редактирования: Поправил, был старый вставил старый тест...
|
|
|
ViGOur |
15.2.2013, 14:55
Сообщение
#16
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Изменил код, так как по невнимательности вставил код немного другого теста...
|
|
|
Алексей1153 |
15.2.2013, 18:25
Сообщение
#17
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
занимательно вышло, кстати, с точки зрения брейнфака )
с точки зрения практики- хм... Потом расскажешь Сообщение отредактировал Алексей1153 - 15.2.2013, 18:26 |
|
|
lanz |
18.2.2013, 10:01
Сообщение
#18
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Какие подводные камни? |
|
|
ViGOur |
18.2.2013, 12:12
Сообщение
#19
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
1. Данный код только для класса CAnimal и производных от него классов. ( я понимаю, что можно поправить, но все же! )
2. При добавлении типа в CEnumClass::eEnum, тебе так же нужно будет добавлять прототип функции в массив creators. (если забыл добавить, то ... ) 3. Ты должен будешь соблюдать порядок типов в CEnumClass::eEnum и прототипов функций в массиве creators. (если порядок другой, то ...) |
|
|
lanz |
18.2.2013, 14:11
Сообщение
#20
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Все верно, но это из-за ограничения на то что должно быть соответствие между классами и enum.
Если его снять, то получится либо rtti, либо чистые шаблоны. Чего то я не очень догоняю зачем их смешивать. Как я понял, задача состоит в том чтобы сделать N различных типов. А зачем? Все равно они будут использоваться через один и тот же интерфейс (CAnimal*). А если это для того чтобы сделать статическую проверку типов, то все равно ничего не выйдет (та же проблема что и в первом посте). Можно какой нибудь пример использования? |
|
|
Текстовая версия | Сейчас: 18.1.2025, 7:01 |