Заблокирован
|
|||||||||||
1 | |||||||||||
шаблоны31.07.2011, 11:36. Показов 4552. Ответов 61
возник вопрос, а как можно сделать так, чтобы различные экземпляры шаблона класса вели себя по разному в зависимости от того, что было передано в аргументах - класс или некласс. Приведу пример
0
|
31.07.2011, 11:36 | |
Ответы с готовыми решениями:
61
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис) Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны Шаблоны |
Заблокирован
|
|
31.07.2011, 13:32 [ТС] | 21 |
это не совсем по теме, но если уж на то пошло, то name насколько мне известно не стандартизированна. Её вывод implementation-defined в С++03 или нет? Да и зачем нужны эти телодвижения когда можно это проверить на этапе компиляции.
Добавлено через 7 минут да, со структурой ты здорово замутил. Похоже вопрос решён
0
|
31.07.2011, 13:39 | 22 |
а можно еще написать один шаблон (или класс, или ф-ю) "на все случаи жизни", который будет вообще делать ВСЕ. причем всегода то что нужно для каждого типа, который воткнули в шаблон. больше вообще никогда ничего нового программировать не понадобится. и даже пару применчиков с "hello, world!" (если тип - world), "hello, zhopa!" (если zhopa) создать для учебника. пользоваться этим творением или развивать его никто не будет, но для поупражнять (позас*рать) мозги - очень хорошо.
не стремись найти самое сложное решение для самой простой задачи. лучше наоборот.
0
|
Заблокирован
|
|
31.07.2011, 13:49 [ТС] | 23 |
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
31.07.2011, 16:09 | 25 |
Не по теме: LosAngeles просто осваивает шаблоны. Знакомое чувство: и так можно, и эдак! А вот так еще можно? Жаль, нельзя... :) LosAngeles, не увлекайся возможностями шаблонов и не пытайся запрограммировать всю работу на шаблонах... Шаблоны для полноценного программирования много чего НЕ имеют, что приходится вывертами с учетом SFINAE реализовывать. Самое правильное использование шаблонов - обобщенные контейнеры и алгоритмы. Остальное - от лукавого... С типами лучше работать в рантайме - для того виртуальность нам и дана. А еще RTTI можно использовать.
1
|
31.07.2011, 17:27 | 26 |
золотые слова! расскажу историю из практики. получила наша фирма как-то проект большой, сроки были сжатые очень, пригласили двоих экстернов на год. один из них решил кое-что "автоматизировать". месяца два что-то варил, как оно работает, никому объяснить не сумел, сказал только, что "все это очень сложно" и "оно все правильно работает". смотреть вовнутрь было страшно, но все и старись не смотреть. оно действительно как-то работало. проследить как - ни в дибаггере ни по записям в логи было невозможно. по крайней мере понять почему так и какую-то найти логику.
и так было, пока вдруг не стала проявляться с устойчивой регулярностью ошибка. гений уже у нас не работал, дали одному разобраться и исправить. через неделю он сказал, что может только все это заново написать. дали второму, через пару дней заявил то же самое. я вообще отказался вовнутрь смотреть. практически весь код содержится в *.h файлах и выглядит не то что непривычно, а вообще не как код. что-то подобное я видел, когда разбирался с какими-то файлами конфигурации в юниксе. в общем, призвали гения обратно. он пришел, попялился до обеда в свои буковки, извинился и тихо ушел. когда встречаешь на улице - отводит глаза, делает вид, что не узнал. в конце-концов переписал негений всю эту кухню, и все опять работает. и без ошибок. и если поменять что-то нужно - любому скажи, полезет, разберется и поменяет. кстати, экзешник после того как переписали, стал раз в 10 короче. у гения был задумано так, что на каждый пук создавался по его темплейтам новый класс, содержащий поля, которые в свою очередь создавались по темплейтам, которые ...
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
31.07.2011, 17:41 | 28 |
Подобное и без шаблонов возможно, хотя и сложнее, да. Главное в крайности не впадать, а то так можно и до того дойти, что STL не использовать, ибо там сплошь код в заголовочных файлах, он трудно читаем и т.д.
Очень похоже на рекомендацию не изучать шаблоны, так как они нафиг не нужны. На самом же деле надо очень тщательно изучать шаблоны, чтобы знать их возможности и ограничения, и использовать их когда это действительно выгодно. А в процессе изучения просто придётся построить кучу бесполезных велосипедов.
0
|
31.07.2011, 17:47 | 30 |
но его не нужно ни читать, ни тем более понимать. нужно всего лишь правильно использовать. хотя работа сталкивала и с человеком, который написал свой класс вектор, потому что не смог разобраться в исходнике стандартного.
нет, это не есть рекомендация не изучать шаблоны. просто если купили ребенку электродрель, нужно проследить, чтобы он не пытался теперь все делать исключительно с ее помощью. даже если это в принципе позможно.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
31.07.2011, 17:55 | 31 |
0
|
Заблокирован
|
|
31.07.2011, 19:07 [ТС] | 33 |
а эта правдивая история относится как то к теме или вобще шаблонам? Если этот программист написал чё то через жопу, то это лично его и вашей фирмы проблемы, а не шаблонов или языка или ещё чего
1
|
31.07.2011, 19:30 | 34 |
твоя цитата?
приведу аргумент, чтобы ты зря не обижался. потому что шаблон по определению - нечто обобщающее для различных типов объектов. повторю: общее поведение для различных типов. а ты пытаешься выкрутить руки этой концепции, и сделать различное поведение для различных типов. для решения таких задач не через жопу существуют другие концепции.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
31.07.2011, 19:44 | 35 |
Это в теории. А на практике это работает только в тривиальных случаях. Иначе бы не появилась возможность специализации шаблонов.
0
|
Заблокирован
|
|
31.07.2011, 19:58 [ТС] | 36 |
я где то спрашивал твоё мнение? Я же сказал, что задача абстрактная и возможно не имеет применения, и ты при этом предъявляешь претензии, что задача бесполезная?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
01.08.2011, 10:09 | 38 |
novi4ok, Если не умеете пользоваться метапрограммированием на С++ - не стоит отговаривать других. Это бывает как минимум интересно, а так же бывает (хоть и редко) полезно.
0
|
Заблокирован
|
|
01.08.2011, 11:07 [ТС] | 40 |
ааа то есть задача нормальная, а решение которое предложил grizlik78 тебе не нравится? ну так ты покажи своё мы все полюбуемся. С умным видом орать, что всё вокруг говно любой дурак сможет
0
|
01.08.2011, 11:07 | |
Помогаю со студенческими работами здесь
40
шаблоны Шаблоны шаблоны в си++ Шаблоны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |