以下代码不合法:
// .cpp file
{
using namespace X;
char text[] = {someENUMinX, someOtherENUMinX, ... };
}
{} 块在以这种方式使用时会出错。如何做到这一点?即有能力为变量声明的某些部分使用整个命名空间。
换句话说:是否可以使用命名空间撤销?我在每个命名空间中有 40 个成员,并且想在定义变量时切换到它们。
PS.:我很抱歉多次编辑。如果问题有问题,可以删除该问题。
以下代码不合法:
// .cpp file
{
using namespace X;
char text[] = {someENUMinX, someOtherENUMinX, ... };
}
{} 块在以这种方式使用时会出错。如何做到这一点?即有能力为变量声明的某些部分使用整个命名空间。
换句话说:是否可以使用命名空间撤销?我在每个命名空间中有 40 个成员,并且想在定义变量时切换到它们。
PS.:我很抱歉多次编辑。如果问题有问题,可以删除该问题。
这很方便,因为在 .cpp 中,我可以在定义 var 时使用命名空间 X - X::someXcall() - 然后可以在全局命名空间中访问 var,
这是错误的。它在全局命名空间中不可访问。该extern
行不是X::text
. 什么extern char text[];
是声明一个text
在全局命名空间中命名的不同变量。
更重要的是,为什么在全局命名空间中有它是可取的?为什么有人想要使用命名空间,却一有机会就破坏了他们的全部目的?
您的程序有 2 个不同的对象,名为text
.
extern char text[]
在 .h 文件中声明的文件位于全局命名空间中。char text[]
是不是和中的一样namespace X
。