Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
#1

Не могу выполнить пример из книги - C++

25.08.2013, 14:54. Просмотров 2047. Ответов 14
Метки нет (Все метки)

Добрый день начал изучать C++, и уже столкнулся с первой проблемой не могу скомпилировать код ниже. Пример демонстрирует разницу между локальными и глобальными переменными, взят из книги Шилд Г. "С++ Базовый курс". Компилятор VS ругается (IntelliSense: count не является однозначным 2 раза 13 и 21 строки). Не могу понять почему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
void func1();
void func2();
int count;
 
int main()
{
    int i;
    for (int i=0; i<=10; i++)
    {
        count = i*2;
        func1();
    }
    return 0;
}
 
void func1() 
{
    cout << "count = " << count;
    cout << '\n';
    func2();
}
 
void func2() 
{
    int count;
    for (count=0; count<3; count++) cout << "."; 
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2013, 14:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу выполнить пример из книги (C++):

пример из книги - C++
#include &lt;iostream.h&gt; long summa (int k,...){ int *pik=&amp;k; char *pc=(char *)pik; cout &lt;&lt;&quot; *pc=&quot;&lt;&lt;*pc&lt;&lt;&quot;...

Пример из книги. Шилдт - C++
Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не выводится сообщение) #include &lt;iostream&gt; using namespace...

Простой пример из книги - C++
Решил сделать все задания Павловской Т.А. С/С++ и вот с самого первого примера не понял кое-что. Сама программа вылетает и не показывает...

Пример с книги не компилируется! - C++
Павловская Т.С. Пример (программа печатает таблицу значений функции г/=х2+1 во введенном диапазоне): ...

Пример из книги- ну, напутан - C++
Представляте, вчира три часа смотрел на страницу книги- разбирал его, пытался понять... Поначалу ве показалась мне совсем простым.. Дальше...

Непонятный пример из книги - C++
Не могу никак разобраться в одном маленьком примере из книги, речь идёт про условную операцию. Распишите плз, как действует при i=0 i=1 i= 2

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
25.08.2013, 14:59 #2
C++
1
using namespace std;
Не советую открывать весь неймспейс. В данном случае идет конфликт из-за \vc\include\xutility(3251) : iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)'
zer0mail
2332 / 1958 / 192
Регистрация: 03.07.2012
Сообщений: 7,021
Записей в блоге: 1
25.08.2013, 15:03 #3
Похоже, имя используется в std. Замени на count0, например.
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
25.08.2013, 15:07  [ТС] #4
Цитата Сообщение от Nekto Посмотреть сообщение
C++
1
using namespace std;
Не советую открывать весь неймспейс. В данном случае идет конфликт из-за \vc\include\xutility(3251) : iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)'
Как выполнить пример тогда?

Добавлено через 4 минуты
Цитата Сообщение от zer0mail Посмотреть сообщение
Похоже, имя используется в std. Замени на count0, например.
Спасибо помогло, а как можно просмотреть что там в std, чтобы не получить такой ошибки, получается count можно спокойно занести в список зарезервированных слов?
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2013, 15:19 #5
Цитата Сообщение от programmer92ua Посмотреть сообщение
Спасибо помогло, а как можно просмотреть что там в std, чтобы не получить такой ошибки, получается count можно спокойно занести в список зарезервированных слов?
Вся стандартная библиотека в std:: . Состаришься, пока посмотришь Вместо
C++
1
using namespace std;
используй
C++
1
using std::cout;
, тогда будет доступно только имя cout, и в случае конфликта с твоим собственным именем (count) компиллер выдаст ошибку . А если using namespace std; то ошибка проявится только в рантайме или при использовании конфликтного имени.
Почитай материал по теме "Селективная директива using"
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.08.2013, 16:31 #6
Цитата Сообщение от programmer92ua Посмотреть сообщение
Компилятор VS ругается (IntelliSense: count не является однозначным 2 раза 13 и 21 строки). Не могу понять почему?
А я не могу понять: почему у меня НЕ ругается?
Миниатюры
Не могу выполнить пример из книги  
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 16:43 #7
Цитата Сообщение от programmer92ua Посмотреть сообщение
Не могу понять почему?
потому что
Цитата Сообщение от programmer92ua Посмотреть сообщение
C++
1
using namespace std;
В STL есть алгоритм std::count

Цитата Сообщение от programmer92ua Посмотреть сообщение
чтобы не получить такой ошибки
не использовать using namespace

Цитата Сообщение от programmer92ua Посмотреть сообщение
а как можно просмотреть что там в std
Например, раскурить стандарт + документацию к компилятору
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.08.2013, 16:46 #8
Croessmah, у мня почему не ругается?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 16:49 #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Croessmah, у мня почему не ругается?
Да кто ж его знает. Может студии разных версий и в файле iostream Вашего компилятора этот алгоритм неявно не подключается, а у ТС подключается.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 16:52 #10
Вот скриншот то еще скажете что врем
Не могу выполнить пример из книги
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.08.2013, 16:55 #11
Да, ТС не указал студию... Кстати, mingv тоже ошибки не выдаёт... Но согласен, что лучше так не делать.

Добавлено через 55 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
Вот скриншот то еще скажете что врем
А мой скрин тогда как же?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.08.2013, 16:57 #12
Ну тогда, вот вам ещё...
Миниатюры
Не могу выполнить пример из книги  
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 16:59 #13
Цитата Сообщение от alsav22 Посмотреть сообщение
А мой скрин тогда как же?
Из 10-ой студии? А мой из 12-ой

Добавлено через 1 минуту
Если что, то вот Вам еще пример:
"error C2872: неоднозначный символ" при переменной count
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.08.2013, 17:01 #14
Цитата Сообщение от Croessmah Посмотреть сообщение
Из 10-ой студии? А мой из 12-ой
Ну, тут уж, что сказать... 12-я - это ж... не 10-я...
mingv тоже не прав?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 17:05 #15
Цитата Сообщение от alsav22 Посмотреть сообщение
mingv тоже не прав?
В данном случае тут все правы, ибо что во что подключается определяется реализацией, а не стандартом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2013, 17:05
Привет! Вот еще темы с ответами:

Не работает пример из книги - C++
Я писал код из книжки и ничего не работает. #include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt; int main(){ ...

Пример из книги Лафоре - C++
Здравствуйте! Не могли бы подсказать, по какой причине в листинге ниже переменные должны быть обязательно быть изначально изначально с...

Пример из книги Лафоре - C++
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche(): #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

пример из книги страуструпа - C++
struct pair { char* name; // ñòðîêà int val; // öåëîå }; const int large = 1024; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.08.2013, 17:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru