0

以下代码不合法​​:

// .cpp file

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

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

换句话说:是否可以使用命名空间撤销?我在每个命名空间中有 40 个成员,并且想在定义变量时切换到它们。

PS.:我很抱歉多次编辑。如果问题有问题,可以删除该问题。

4

2 回答 2

2

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

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

更重要的是,为什么在全局命名空间中有它是可取的?为什么有人想要使用命名空间,却一有机会就破坏了他们的全部目的?

于 2012-08-23T10:17:05.910 回答
0

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

extern char text[]在 .h 文件中声明的文件位于全局命名空间中。char text[]是不是和中的一样namespace X

于 2012-08-23T10:15:53.637 回答