Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452

Создание пространства имен

05.05.2015, 14:15. Показов 7866. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток !!!

Не могу понять назначение создания пространств имен.

В книге автор привел следующий код программы.

Помогите пожалуйста разобраться в эго назначении .

Что автор этим хотел сказать ?

 Комментарий модератора 

Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Миниатюры
Создание пространства имен  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2015, 14:15
Ответы с готовыми решениями:

Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные?
Вот например namespace nms1 { int gh; } namespace nms2 { int gh;

Пространства имён с++
Может я отсталый совсем, но перечислите пожалуйста все известные вам пространства имён в с++

Пространства имен в Эклипс
Добрый день. Переношу свой проект из IAR на Eclipse+Yagarto(gcc 4.6.2) Подскажите, из-за чего в hpp модулях проекта может не...

60
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
05.05.2015, 14:28
автор решил избавиться от конфликта имен и создал 2 файла с одинаковыми по названию пространствами имен
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2015, 14:34
Цитата Сообщение от RAFA91 Посмотреть сообщение
Не могу понять назначение создания пространств имен.
Попытка исключения конфликтов в именах переменных/классов и т.п. в больших проектах.
Когда несколько разработчиков независимо друг о другая создают код, который будет (или может быть) использоваться в одном проекте, то велика вероятность, что они могут дать одинаковые имена совершенно разным сущностям. Чтобы минимизировать возможность таких конфликтов были придуманы пространства имен.
Каждый разработчик добавляет функции только в своё пространство имен. Т.о. если пространства имен разные - конфликтов быть не может.
Цитата Сообщение от RAFA91 Посмотреть сообщение
Что автор этим хотел сказать ?
Вероятно то, что пространства имен являются расширяемыми. Т.е. можно в совершенно разных файлах добавлять в одно и то же пространство имен новые идентификаторы.
2
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
05.05.2015, 14:38  [ТС]
как я понял из вышесказанного функции move и resize имеються в главном файле куда подкл.

вышеприв. файлы ?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2015, 14:45
Цитата Сообщение от RAFA91 Посмотреть сообщение
функции move и resize имеються в главном файле куда подкл.
Скорее всего. Но если они не используются, реализация не является обязательной.
2
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
05.05.2015, 14:50  [ТС]
скажите пожалуйста , а что если функция move будет присутствовать в обеих файлах (header 1 (2))) с одинаковыми сигнатурами

но разной технологией выполнения ?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2015, 14:55
Цитата Сообщение от RAFA91 Посмотреть сообщение
но разной технологией выполнения ?
А что это такое?
Цитата Сообщение от RAFA91 Посмотреть сообщение
а что если функция move будет присутствовать в обеих файлах
Такие вопросы проще всего проверять на практике.
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
05.05.2015, 15:04  [ТС]
под технологией я подразумевал метод выплнения функции.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2015, 15:08
Цитата Сообщение от RAFA91 Посмотреть сообщение
под технологией я подразумевал метод выплнения функции.
Всё равно ничего не понял. Можешь привести пример кода?
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
05.05.2015, 15:33  [ТС]
к примеру в файле baba1.cpp такой код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
#include <iostream>
 
 
using namespace std;
 
 
extern int x ;
 
namespace Window
 
{
 
void basa()
 
{
    cout << "\nbaba1.cpp "  <<x<< "\n";
}
 
}
а в файле zadanie_4_metod_simpsona.cpp такой код

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
32
33
34
35
#include <conio.h>
 
#include "baba1.cpp"
 
 int x = 100;
 
 void basa()
 
{
    cout << "\nzadanie_4_metod_simpsona.cpp "  <<x<< "\n";
}
 
 
 int main()
 
{   
    
 
    int x=200;
 
    cout<<x<<"\n\n";
    
    ::x=180;
 
    cout<<x<<"\n\n";
 
    basa(); 
 
    
    
    getch();
 
    return 0;
 
}
в обеих файлае есть basa();

в ходе компиляции ошибок вроде нету но выдает мне сообщение на экран с функции void basa() файла

zadanie_4_metod_simpsona.cpp. А как же мне получить доступ к функции void basa() файла baba1.cpp ?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2015, 15:48
Во-первых, не надо инклюдить файлы *.cpp. Т.е. такого:
C++
1
#include "baba1.cpp"
быть не должно.
Во-вторых, для вызова функции из пространства имен, нужно указывать полностью квалифицированное имя этой функции. Т.е. 27 строку заменить на:
C++
1
Window::basa();
или добавлять using-директиву или using-декларацию.
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
05.05.2015, 16:00  [ТС]
вместо .cpp применять hpp ?

Спасибо Вам большое !!! явное обращение мне помогло Window::basa();
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
06.05.2015, 12:05  [ТС]
__________________________________


столкнулся с такой интересной штукой , как вложенное пространство имен.

помогите разобраться в каком случае применяеться вложенное пространство имен .
Миниатюры
Создание пространства имен  
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2015, 12:38
Цитата Сообщение от RAFA91 Посмотреть сообщение
в каком случае применяеться вложенное пространство имен .
Для структурированного разделения сущностей.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
06.05.2015, 12:44  [ТС]
честно говоря не совсем понял как это.

зачем нужно вложенное пространство , если можна функцию sizeof обьявить в одном пространстве к примеру

Window
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2015, 13:13
Цитата Сообщение от RAFA91 Посмотреть сообщение
если можна функцию sizeof обьявить в одном пространстве к примеру
Значит, нельзя. Т.к. Window::Pane::size() и Window::size() могут делать совершенно разные вещи.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
06.05.2015, 13:26  [ТС]
как я понимаю есть какой-то файл 1 и 2 где имееться к примеру конструкции

C++
1
2
3
4
5
6
7
8
9
10
11
namespace Window
 
{
 
void basa()
 
{
    cout << "\nbaba1.cpp "  <<x<< "\n";
}
 
}
то для исключения взаимного влияния нужно в каком-то из этих файлов написать к примеру

C++
1
2
3
4
5
6
7
8
9
10
11
namespace Window
 
{
    namespace Wind
 
    {
        void basa() { cout << "\nbaba2.cpp "  <<x<< "\n"; }
 
    }
 
}
так ли я понял эту необходимость вложения ?
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.10.2015, 12:13  [ТС]
Добрый день !
Подскажите пожалуйста можно ли сделать в пространстве имен

C#
1
2
3
4
5
6
 namespace R
{
    private: int x=78;
        public: int func(int a) { int b = x; x=a; return b;}
        
}
переменную x к примеру приватной (доступной только в самом пространстве)?
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
15.10.2015, 12:17
Цитата Сообщение от RAFA91 Посмотреть сообщение
Подскажите пожалуйста можно ли сделать в пространстве имен переменную x к примеру приватной
Нет. private\public\protected только для классовых типов.
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
15.10.2015, 12:24  [ТС]
так только тогда ?

C++
1
2
3
4
5
6
7
class R
{
    private: static int x;
    public: static int func(int a) { int b = x; x=a; return b;}
};
 
 int R :: x=78;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2015, 12:24
Помогаю со студенческими работами здесь

Использование пространства имен
Добрый день! Вопрос такой: Для стандартной библиотеки обычно используется пространство имен std, которое подключается через...

Использование пространства имен
Написать программу, использующую описанные типы данных: инициализация переменных (ввод пользователя), выполнение действий (в зависимости от...

Использование пространства имен
Заголовочный файл с осн функциями двунаправленного списка.Нужно построить на его основе стек и очередь с обобщенным интерфейсом т.е...

Подключение пространства имён
Подскажите пошагово как в VS2010 создать dll, подключив такие .NET пространства имён как #using &lt;System.dll&gt; using namespace std;...

Область видимости, пространства имен
имею макрос #define max(a,b) (((a) &gt; (b)) ? (a) : (b)) он определен в Windows.h, который мне нужен в проекте... также мне нужна...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru