|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.11.2012, 17:26 | #1 |
Регистрация: 18.04.2010
Сообщений: 8
|
Ошибка при компиляции. P.S. Новичок в С++
код:
Код:
ошибки: ||=== Глобальные переменные, Debug ===| \main.cpp||In function `int main()':| \main.cpp|14|error: use of `count' is ambiguous| \main.cpp|7|error: first declared as `int count' here| C:\Program Files\CodeBlocks\MinGW\bin\..\lib\g cc\mingw32\3.4.5\..\..\..\..\includ e\c++\3.4.5\bits\stl_algo.h|413|err or: also declared as `typename std::iterator_traits<_Iterator>:i fference_type std::count(_InputIterator, _InputIterator, const _Tp&)' here| \main.cpp|14|error: `count' was not declared in this scope| \main.cpp|14|warning: unused variable 'count'| \main.cpp||In function `void func1()':| \main.cpp|22|error: use of `count' is ambiguous| \main.cpp|7|error: first declared as `int count' here| C:\Program Files\CodeBlocks\MinGW\bin\..\lib\g cc\mingw32\3.4.5\..\..\..\..\includ e\c++\3.4.5\bits\stl_algo.h|413|err or: also declared as `typename std::iterator_traits<_Iterator>:i fference_type std::count(_InputIterator, _InputIterator, const _Tp&)' here| \main.cpp|22|error: `count' was not declared in this scope| \main.cpp|22|warning: unused variable 'count'| ||=== Build finished: 8 errors, 2 warnings ===| Ребят помогите, не могу понять в чем моя здесь ошибка. Последний раз редактировалось ACE Valery; 27.11.2012 в 18:32. |
27.11.2012, 17:38 | #2 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
0) Программный код оформляется тегом форума CODE.
Цитата:
Цитата:
|
||
27.11.2012, 17:45 | #3 | |
Регистрация: 18.04.2010
Сообщений: 8
|
Цитата:
|
|
27.11.2012, 17:49 | #4 | |
Регистрация: 18.04.2010
Сообщений: 8
|
Цитата:
|
|
27.11.2012, 17:50 | #5 | |
Регистрация: 18.04.2010
Сообщений: 8
|
Цитата:
|
|
27.11.2012, 18:00 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Нет подвоха, просто компилятор вас предупреждает, что возможен конфликт, ибо не ясно, какую из двух переменных вы имели ввиду.
Почитайте: http://en.wikipedia.org/wiki/Variable_shadowing |
27.11.2012, 18:05 | #7 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Когда Вы написали #include <iostream>, Вы тем самым включили в программу весь текст заголовочного файла библиотеки iostream. В нём, среди прочего, объявлен идентификатор std::count. Дальше Вы написали using namespace std - эта директива позволяет не писать префикс std:: перед идентификаторами. Дальше Вы попытались объявить переменную count, и компилятор крепко задумался. Я его хорошо понимаю. Представьте на секунду, что он позволил бы подобное объявление. Тогда в func1, чем следовало бы счесть count - count из Вашего кода, или std::count? Способа различить нет, так что компилятор превентивно, обнаружив "повторное", с его точки зрения, объявление идентификатора count, отрапортовал об ошибке, по мере сил объяснив, что именно ему не нравится. Увы, слова его не были услышаны... |
|
27.11.2012, 18:25 | #8 |
Регистрация: 18.04.2010
Сообщений: 8
|
спасибо, примерно понятно, проще переименовать. но вот, что интересно: почему в другом приложении компиляция произошла без ошибок? получается каждое приложение по разному воспринимает суть кода?
|
27.11.2012, 18:48 | #9 |
Регистрация: 18.04.2010
Сообщений: 8
|
а вот что пишет автор книги по этому поводу:
"Несмотря на то что переменная count не объявляется ни в функции main(), ни в функции func1(), обе они могут ее использовать. Но в функции func2() объявляется локальная переменная count. Здесь при обращении к переменной count выполняется доступ к локальной, а не к глобальной переменной. Важно помнить, что, если глобальная и локальная переменные имеют одинаковые имена, все ссылки на "спорное" имя переменной внутри функции, в которой определена локальная переменная, относятся к локальной, а не к глобальной переменной. |
27.11.2012, 23:44 | #10 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при компиляции... | Тамарочка | Общие вопросы C/C++ | 3 | 05.12.2011 00:53 |
Ошибка при компиляции | Banner | Помощь студентам | 2 | 20.02.2011 13:09 |
Ошибка при компиляции | vovchok777 | Общие вопросы C/C++ | 1 | 26.12.2010 16:07 |
Ошибка при компиляции | 7B! | Общие вопросы .NET | 7 | 08.01.2010 13:11 |
Ошибка при компиляции | zak | Общие вопросы C/C++ | 2 | 11.12.2007 18:24 |