Шаблоны с++ |
Здравствуйте, гость ( Вход | Регистрация )
Шаблоны с++ |
Tonal |
20.2.2009, 9:44
Сообщение
#11
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
нет, забыл написать чтобы было разделение на cpp и h. Соответственно реализация вне описания. Это называется export template и поддерживается только комой. (подсказка, попробуй вызвать свою метод met из другого cpp и с другим типом чем он реализован. В твоём коде тип нужен: каким образом компилятор узнает тип val? посмотрит на объявление класса У тебя нет класса, есть шаблон класса и там тип val не указан. Для разных типов объектный код функции может существенно отличатся друг от друга. Т.е. не зная какой тип будет подставлен вместо Type в общем случае невозможно создать объектный код для шаблона метода met. Стало быть помещать его шаблонную реализацию в отдельно компилируемый файл не имеет смысла. Именно по этому большинство компиляторов не поддерживают export template. Каким образом компилятор узнает для какого именно типа этот метод предназначен? ну вот если идет специализация (ты же про неё?) то тогда можно и указать а по умолчанию тот же самый что в заголовке класса Есть полная специализация, частичная специализация и совмещение (перегрузка). Боюсь, что такое опускание усложнит правила реализации компилятора и понимание кода. Например хотя спецификатор virtual перед методом производного класса можно опускать, тем не менее многие советуют его таки писать - это сильно упрощает восприятие интерфейсов. П.С. Да, add method к С++ отношения не имеет. |
|
|
kuler |
20.2.2009, 11:03
Сообщение
#12
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
Да, add method к С++ отношения не имеет. весь вопрос был изза того что в ломы лишнюю по моему мнению фигню писать, а это как раз избавляет от необходимости Шаблоны необходимо описывать в inl-файлах, это вообще не понял чо такое и с другим типом чем он реализован. что значит сия фраза? попробуй вызвать свою метод met из другого cpp ага, он типа пишет анрезолв? |
|
|
Tonal |
20.2.2009, 11:39
Сообщение
#13
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Есть очень хорошая книга: Шаблоны C++: справочник разработчика.
Там всё это очень хорошо описано. Хотя для начала лучше почитать Страуструпа, Мейерса и Саттера. Сообщение отредактировал Tonal - 20.2.2009, 11:39 |
|
|
AD |
20.2.2009, 12:11
Сообщение
#14
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата(AD) Шаблоны необходимо описывать в inl-файлах, это вообще не понял чо такое Такой же файл, как и h-file, cpp-file, c-file! Ничем не отличается. Объявление пишешь в этом файле, подключаешь его в cpp или в h файле (точно не помню), а в cpp-файле пишешь реализацию. Но а вообще эти шаблоны лучше вместе писать, как тебе посоветовал Tonal |
|
|
kuler |
20.2.2009, 16:26
Сообщение
#15
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
|
|
|
AD |
20.2.2009, 17:04
Сообщение
#16
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Andrew Selivanov |
26.2.2009, 13:53
Сообщение
#17
|
Участник Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: 6 |
лучше вместе писать, как тебе посоветовал Tonal да, но получается что в хедере будет вся реализация и он может быть к примеру 8000 строк, что убивает весь смысл хидеров У шаблонов не предусмотрена реализация, потому что шаблон - это именно шаблон, то есть нужная реализация генерируется автоматически. Здесь концепция шабона пересекается с концепцией заголовочных файлов... Вообще тут выше порекомендовали очень правильную книгу на эту тему, большинство вопросов там освещено. Десятая глава. |
|
|
AD |
3.3.2009, 11:26
Сообщение
#18
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
kuler, удалось сделать?
|
|
|
kuler |
3.3.2009, 16:12
Сообщение
#19
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
AD, плюнул, ибо меня не устраивает отсутствие безгеморройного разбиения на срр и h. Как нить в другой раз чо нить напишу.
|
|
|
Текстовая версия | Сейчас: 15.1.2025, 23:42 |