以下代码不合法:
// .cpp file
{
using namespace X;
char text[] = {someENUMinX, someOtherENUMinX, ... };
}
以这种方式使用时,{}块会出错。怎么做到这一点?即能够为变量声明的某些部分使用整个命名空间。
以其他方式表达:是否可以撤销使用命名空间?我在每个命名空间中都有40个成员,并希望在定义变量时切换到它们。
PS:我很抱歉有多次修改。如果这是一个问题,可以删除该问题。
答案 0 :(得分:2)
这很方便,因为在.cpp中我可以在定义变量时使用命名空间X - X :: someXcall() - 然后可以在全局命名空间中访问var,
这是错的。它在全局命名空间中不可访问。 extern
行不是X::text
的声明。 extern char text[];
所做的是在全局命名空间中声明一个名为text
的不同变量。
更重要的是,为什么要在全局命名空间中使用它?为什么有人想要使用命名空间,但却在第一时间打败了它们的全部目的?
答案 1 :(得分:0)
您的程序有2个不同的对象,名为text
。
extern char text[]
驻留在全局命名空间中。它与char text[]
中的namespace X
不同。