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

почему глобальную переменную не видно, хотя она объяылена? - C++

Восстановить пароль Регистрация
 
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
19.04.2011, 20:11     почему глобальную переменную не видно, хотя она объяылена? #1
C++
1
2
3
4
5
6
7
8
9
#include <vector>
using namespace std;
 
int min= 1;
 
int main(){
 min= 90;
 return 0;
}
Вот, друзья, при присваивании min значения 90 компилятор пишеь, что он первый раз видит эту переменую. Но ведь она объявлена!

Непонятную роль во всём этом играют объявления
C++
1
2
#include <vector>
using namespace std;
Если закомментить одно из них или оба, то код компилится, а если нет то не компилится. Каким-то образом эти объявления конфликтуют меж собой и втягивают в этот конфликт переменную min! Как бы разобраться? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 20:11     почему глобальную переменную не видно, хотя она объяылена?
Посмотрите здесь:

Немогу объявить глобальную переменную C++
C++ Как обьявить глобальную переменную в функции?
C++ Как и где описать глобальную переменную?
C++ Как объявить глобальную переменную в Dev-C++ 4.9.9.2?
C++ Как обьявить глобальную переменную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
19.04.2011, 20:22     почему глобальную переменную не видно, хотя она объяылена? #2
Компилятор воспринимает в мейне min не как вашу переменную, а как функцию из std.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
19.04.2011, 20:25  [ТС]     почему глобальную переменную не видно, хотя она объяылена? #3
Не объясняет;
А так почему он не воспринимает и компилит?
C++
1
2
3
4
5
6
7
8
9
//#include <vector>
using namespace std;
 
int min= 1;
 
int main(){
 min= 90;
 return 0;
}
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
19.04.2011, 20:44     почему глобальную переменную не видно, хотя она объяылена? #4
Скорее всего функция min обьявлена в файле, который заинклуден в векторе. Посмотрите сдесь
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.04.2011, 20:48     почему глобальную переменную не видно, хотя она объяылена? #5
в vector'е есть такая строка:
C++
1
#include <bits/stl_algobase.h>
а в этом самом stl_algobase.h есть
C++
1
2
3
 min(const _Tp& __a, const _Tp& __b)
 min(const _Tp& __a, const _Tp& __b, _Compare __comp)
    std::min(__len1, __len2));
вот так будет компилироваться:
C++
1
2
3
4
5
6
7
8
9
#include <vector>
using namespace std;
 
int min= 1;
 
int main(){
 ::min= 90;
 return 0;
}
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
19.04.2011, 20:49     почему глобальную переменную не видно, хотя она объяылена? #6
Цитата Сообщение от kravam Посмотреть сообщение
Не объясняет;
А так почему он не воспринимает и компилит?
C++
1
2
3
4
5
6
7
8
9
//#include <vector>
using namespace std;
 
int min= 1;
 
int main(){
 min= 90;
 return 0;
}
У меня студия на это пишет: "std: пространство имен с таким именем не существует".
Это и понятно: ни одного заголовка не подключено откуда тогда взятся пространству имен std.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
19.04.2011, 20:59  [ТС]     почему глобальную переменную не видно, хотя она объяылена? #7
Да я понимаю что конфликт имён, мне непонятно почему имя min чудесным образом возникает (и конфликтует с введённым мною) при ОДНОВРЕМЕННОМ использовании #include <vector>
и
using namespace std;

Добавлено через 3 минуты
Kastaneda,min определена в vectore; а значит что? Значит такой код не должен компилиться
C++
1
2
3
4
5
6
7
8
9
#include <vector>
//using namespace std;
 
int min= 1;
 
int main(){
 min= 90;
 return 0;
}
Но он компилится!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.04.2011, 21:06     почему глобальную переменную не видно, хотя она объяылена? #8
Да потому что без using namespace std; вам к min просто так не обратиться, только через std::. Вот конфликта имён и не происходит, одна min - в std, другая (ваша) - в глобальном пространстве.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 21:31     почему глобальную переменную не видно, хотя она объяылена?
Еще ссылки по теме:

Как глобальную переменную засунуть в структуру? C++
Можете подсказать,как правильно описать глобальную переменную C++
Как создать глобальную переменную? C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
19.04.2011, 21:31  [ТС]     почему глобальную переменную не видно, хотя она объяылена? #9
Понял, намотал на ус
Yandex
Объявления
19.04.2011, 21:31     почему глобальную переменную не видно, хотя она объяылена?
Ответ Создать тему
Опции темы

Текущее время: 08:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru