【发布时间】:2011-01-10 07:25:25
【问题描述】:
使用using namespace,我使该命名空间的全部内容直接可见,而无需使用命名空间限定符。如果using namespace 出现在广泛使用的标头中,这可能会导致问题 - 我们可能会无意中使两个具有相同类名的命名空间可见,并且编译器将拒绝编译,除非类名前面带有命名空间限定符。
我可以撤消 using namespace 以使编译器忘记它之前看到的吗?
【问题讨论】:
-
我敢打赌,有一个非常丑陋的黑客为此使用了预处理器。但我猜你不想要那个
-
@Eli:Boost 中没有,这可能意味着没有。
-
至少缩短您必须输入的内容的可能解决方案是在文件顶部使用
#define N namespace::,在底部使用#undef N。当然,这意味着您必须小心不要在文件中您不希望出现namespace::的任何地方使用N。typedef也可能有用。
标签: c++ namespaces using