撤消使用命名空间?

时间:2012-08-23 10:11:44

标签: c++ namespaces variable-declaration

以下代码不合法​​:

// .cpp file

{
  using namespace X;
  char text[] = {someENUMinX, someOtherENUMinX, ... };
}

以这种方式使用时,{}块会出错。怎么做到这一点?即能够为变量声明的某些部分使用整个命名空间。

以其他方式表达:是否可以撤销使用命名空间?我在每个命名空间中都有40个成员,并希望在定义变量时切换到它们。

PS:我很抱歉有多次修改。如果这是一个问题,可以删除该问题。

2 个答案:

答案 0 :(得分:2)

  

这很方便,因为在.cpp中我可以在定义变量时使用命名空间X - X :: someXcall() - 然后可以在全局命名空间中访问var,

这是错的。它在全局命名空间中不可访问。 extern行不是X::text的声明。 extern char text[];所做的是在全局命名空间中声明一个名为text的不同变量。

更重要的是,为什么要在全局命名空间中使用它?为什么有人想要使用命名空间,但却在第一时间打败了它们的全部目的?

答案 1 :(得分:0)

您的程序有2个不同的对象,名为text

.h文件中声明的

extern char text[]驻留在全局命名空间中。它与char text[]中的namespace X不同。