![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Julia9311 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 6.12.2012 Репутация: нет Всего: нет |
программа выдает ошибку
c:\program files\microsoft visual studio\myprojects\шаблон\шаблон.cpp(30) : error C2065: 'n' : undeclared identifier
|
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 4 Всего: 49 |
С программой все в порядке. Вам надо сменить компилятор на что-нибудь нормальное.
|
|||
|
||||
Julia9311 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 6.12.2012 Репутация: нет Всего: нет |
Да, скорее всего из-за компилятора) у меня шестая студия
|
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 4 Всего: 49 |
||||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Шаблон должен быть виден на момент компиляции, перенесите его выше main.
Шестая студия - нормальный компилятор для 1996 года. (17 лет уже, слава богу дедушке) |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
в данном случае он достаточно виден))
http://codepad.org/J7CnInX3 Добавлено через 12 минут и 55 секунд вообще говоря, присутствие реализации шаблонной функции в файле (единице трансляции), где она используется, не обязательно.
|
|||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
baldina, не находите ли вы, что ваши выводы, напрямую противоречат вашей же цитате и стандарта. ![]() |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
нет. читать внимательней (от слова unless)
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
не понял, там - это где?
Добавлено через 8 минут и 53 секунды
если соответствующая специализация не инстанцирована явно в какой-либо единице трансляции. т.е. если где-то она инстанцирована явно, определения в данной единице трансляции не требуется. отсюда следует, что в общем случае
а что в приведенном коде есть явная специализация я не говорил. |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
btw если явная специализация не используется, шаблон функции должен быть определен в каждой единице трансляции. нигде при этом не сказано, что он должен быть определен до первого использования. достаточно объявления. поэтому код ТС корректен, переносить определение выше main() не требуется.
|
|||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
В стандарте много чего не сказано. Можно слишком далеко зайти, считая, что можно делать все что вздумается, ссылаясь на то что в стандарте этого не сказано ...
А это весьма красноречиво. Спасибо за цитату. Мне бы не пришло в голову искать ее применительно к компилятору 1996 года. Вообще, забавен сам факт применения стандарта, к компилятору выпущенному еще до выхода всяких стандартов. Причем, обратите внимание, я даже не сомневаюсь что поведение VC6, (хоть и весьма логично), но не удовлетворяет нынешнему стандарту). Просто вы привели цитату, как раз в пользу VC6 (вероятно, сами не желая того.) ![]() |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
я, признаться, о компиляторах не думал вовсе, лишь о языке. я не за и не против VC6.0. и уж тем более ничего от него не требую.
речь шла только о том правильный ли код и почему.
конечно, я не совсем это имел в виду. но в общем то верно: если и программа и компилятор стандарту удовлетворяют, все должно работать. и я не очень понимаю что значит "слишком далеко", и чего в этом плохого. правила языка формальны, а не эмоциональны ![]() Добавлено через 1 минуту и 8 секунд volatile, мне кажется вы зря ...э-э... так эмоциональны. опережающее объявление для шаблона, а также разделение объявления и реализации (с целью ускорения компиляции) - законное и обычное дело. применяется, правда, редко из-за доп. затрат на организацию кода. проще просто определить шаблон выше по тексту. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
рад за вас.
и вас с наступающим! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |