100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
1

как сократить название пространства имен namespace не убирая полностью ?

08.01.2014, 21:07. Показов 3243. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Существует ли какой-нибудь способ сократить путь во вложенном пространстве имен путем замены на другое более короткое название, но полностью не убирая? Как вариант через
C++
1
#define
но меня такой способ немного смущает например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
#define D A::B::C
 
int var;
 
namespace A {
    namespace B {
        namespace C {
            int var;
        }
    }
}
 
int main(){
    var=1;
    D::var=2;
 
    std::cout << var << " " << D::var;
    return 0;
}
как сделать, чтобы можно было обращаться к пространству имен C не через A::B::C, а просто через D:: не используя #define ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 21:07
Ответы с готовыми решениями:

Придумать название для пространства имен
Здравствуйте, предположим, у меня есть основной класс Human и куча других, вспомогательных классов...

В чем разница между подключением пространства имен в начале файла и внутри другого пространства имен?
Привет! Есть свой класс: namespace MyNamespace { public class MyClass { }

Имя типа или пространства имен отсутствует в пространстве имен
Подскажите решение проблемы. Целиком код:

Имя типа или пространства имен отсутствует в пространстве имён
Доброго времени суток. Делаю пример SportsStore из книги &quot;ASP.NET MVC 3 Framework с примерами на...

3
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
08.01.2014, 21:17 2
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
#include <iostream>
 
int var;
 
namespace A
{
  namespace B
  {
    namespace C
    {
      int var;
    }
  }
}
 
using namespace A::B;   // using
namespace CC = A::B::C; // alias
 
int main()
{
  var = 1;
  std::cout << "var = " << var << std::endl;
 
  C::var = 2;
  std::cout << "C::var = " << C::var << std::endl;
  std::cout << "CC::var = " << CC::var << std::endl;
 
  CC::var = 3;
  std::cout << "C::var = " << C::var << std::endl;
  std::cout << "CC::var = " << CC::var << std::endl;
 
 
  return 0;
}
1
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
08.01.2014, 21:19  [ТС] 3
Спасибо. Это то, что нужно.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
08.01.2014, 21:24 4
TrueBit, как написал DU, для этого существует namespace CC = A::B::C; создает псевдоним для пространства имен.
1
08.01.2014, 21:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2014, 21:24
Помогаю со студенческими работами здесь

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

Как правильно делать пространства имён?
Переписываю программу с C++ на python по той причине, что обнаружил для себя модуль bigfloat,...

Как импортировать println() из пространства имен?
Помнится в C# была такая возможность using System; а в джаве что то не нашел такое, а то надоело...

Директива using namespace может применяться только к пространствам имен; "System.Object" является типом, а не пространством имен
Что с этим делать?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru