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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

вопрос про глобальное пространство имен - C++

11.07.2010, 18:50. Просмотров 1368. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
namespace {
int a = 1;
}
 
 
int main() {
 
using std::cout;
int a = 5;
cout <<::a;
}
выводит ошибку. error C2039: 'a' : is not a member of '`global namespace''
хотя если я не определю int a в маин и cout <<a; то норм.


как быть? как добрать до глобальной а?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2010, 18:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос вопрос про глобальное пространство имен (C++):

Как сделать глобальное пространство имени? - C++
Вот так не работает: global.h extern namespace matrix { mat4 proj; mat4 view; mat4 model; mat4 mvp; };

Пространство имен - C++
Я часто встречаю в книгах, туторах, что объявлять пространство имен в больших проектах нельзя(не рекомендуемо), но нигде не сказано...

пространство имен - C++
Здравствуйте! У меня вопрос...В си есть такая функция printf, которая аналогична функции С++ cout. Почему, когда нам необходимо...

пространство имен - C++
Один практикующий программист сказал мне, что пространство именusing namespace std; нежелательно объявлять в начале программы, а лучше...

Пространство имен - C++
Подскажите, пожалуйста. Если я создам своё пространство имен и в нем создам функцию, например, abc() и при использовании в main() using...

Пространство имен - C++
Здравствуйте, имеется код : triangle.h #ifndef TRIANGLE_H_INCLUDED #define TRIANGLE_H_INCLUDED namespace TRG { struct...

6
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
11.07.2010, 18:59 #2
Цитата Сообщение от Krist_ALL Посмотреть сообщение
namespace {
int a = 1;
}
это не глобальное пространство имен
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
11.07.2010, 19:00 #3
C++
1
return 0; //нехватает
Ключевое слово namespace делит глобальное пространство имен. Ток можно сказать что ет ограниченое глобальное пространство имен.
0
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
11.07.2010, 19:15  [ТС] #4
в книге написано что по какомуто там стандарту новому все что хочется сделать глобальным писать в безымянное пространство имен.

и как понимать делит глобалку ?
и всеже как же достучаться до переменной в безимянном пространстве если есть переменная с таким же именем локально
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
11.07.2010, 19:25 #5
Впринцыпе в безымянное пространство имен все члены работают как глобально статические.
Ток они не ограничены пространством имен в результате етого конфликта не избежать если использовать его. Члены в безымянном пространстве имен не квалифицируются.
Что обозначает делим глобальное пространство имен?
Мы таким образом как бы сказать создаем свое глобальное пространство имен токо оно ограничено именем.
1
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
11.07.2010, 19:34  [ТС] #6
и всеже как же достучаться до переменной в безимянном пространстве если есть переменная с таким же именем локально
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.07.2010, 21:24 #7
Цитата Сообщение от Krist_ALL Посмотреть сообщение
#include <iostream>
namespace {
int a = 1;
}
при объявление просто int a = 1; a и так попадет в глобальное пространство имен
думаю в подобном случае никак, переменная замаскирована локальной, при этом безымянной пространство действует как обычное объявление (как если бы написали static int a = 1
0
11.07.2010, 21:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2010, 21:24
Привет! Вот еще темы с ответами:

Пространство имен - C++
Как составить код, когда необходимо использовать классы и методы из разных пространств имен. К примеру используется cout из std и...

Пространство имен - C++
Зачем пространство имен в программировании я чет не понимаю? У мну в учебнике отак написано. Пространство имен, локализуя видимость...

Пространство имен std - C++
В книге Дейтела (как, и в других источниках) написано, что можно написать using namespace std, а можно указывать std:: перед функциями. Но...

Пространство имен std - C++
Какой стиль лучше ? using std::cout; using std::endl; or using namespace std;


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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