![]() |
|
Модераторы: bsa |
![]()
|
|
| yngwie19 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
здравствуйте вот код, есть пара вопросов:
1) при объявлении
Мы указываем шаблонному классу, параметры какого типа мы передаем в конструктор, чтобы шаблонный класс мог сформировать конструктор соответствующего типа. Правильно? 2) Зачем при описании функции show(), в названии класса добавляется <T> (Pair<T>::showQ()), это же и так понятно что это функция шаблонного класса. Это сообщение отредактировал(а) yngwie19 - 20.6.2009, 15:20 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Странный вопрос, это синтаксис языка
Это сообщение отредактировал(а) azesmcar - 20.6.2009, 15:29 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
azesmcar, все два странных?
почему нельзя так написать?
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
затем, что именами, определенными внутри класса можно пользоваться начиная со списка параметров шаблона функции, но не раньше. в противном случае необходимо полностью квалифицировать имя. вот пример: для типа kaka необходимо указать, во-первых, в какой области видимости он находится, во-вторых, тип шаблонного параметра для которого будет создана шаблонная версия класса C<T>::
Это сообщение отредактировал(а) zim22 - 20.6.2009, 15:46 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
первый вопрос не заметил. нет, неправильно. Мы указываем тип, чтобы компилятор сгенерировал копию класса для этого типа. Если специализаций нет - компилятор сгенерирует новый класс, если специализации есть - будет использовать специализированный. вот пример
Это сообщение отредактировал(а) azesmcar - 20.6.2009, 15:41 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Если тело метода будешь внутри class {...} писать, то можно и так. Иначе необходимо указать список и имена параметров шаблона. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
GCC доступен в исходниках. Можешь исправить это неудобство) -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
W4FhLF, получается что если написать так
то коплилятор будет искать не-шаблонную функцию? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не-шаблонную функцию не-шаблонного класса. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
да подумайте сами. есть у вас шаблонный класс. вы его частично специализируете. как компилятору определить какую именно функцию вы определяете(шаблонную или специализированную), если вы не указываете параметры шаблона? Это сообщение отредактировал(а) zim22 - 20.6.2009, 17:23 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
да точно. Я еще наверное может быть так, есть 2 шаблонных класса T и P и у одного и у другого присутствует метод showQ, чтобы правильно описать реализацию этой функции нужно писать так?
или так класс нельзя объявлять? |
|||
|
||||
| yngwie19 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
другими словами, если мы указываем при создании объекта например тип double:
то при создании объекта a, везде где в его описаниях встречается "тип" T, он будет заменен на double?
Это сообщение отредактировал(а) yngwie19 - 20.6.2009, 18:27 |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
yngwie19, Да.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |