【问题标题】:Can one stop using a namespace within one's code? [duplicate]可以停止在自己的代码中使用命名空间吗? [复制]
【发布时间】:2011-09-18 09:43:06
【问题描述】:

可能重复:
How can I “unuse” a namespace?

例如,在声明“使用命名空间 mynamespace”之后,是否可以停止使用该命名空间中间代码?

感谢您的帮助。

【问题讨论】:

标签: c++ namespaces


【解决方案1】:

查看有关命名空间的 C++ 文档。

http://www.cplusplus.com/doc/tutorial/namespaces/

您可以声明您正在“使用”特定范围(例如函数)的命名空间。但我不相信你可以任意指定 using 语句的开始和结束位置,它总是在它声明的其余范围内。

我应该注意(如果我错了,请有人纠正我)在 C++ 中,您几乎可以在任何您想要的地方任意声明一个作用域,只需使用花括号。

{ 
  using mynamespace;
  /* rest of your code here */
}

但是要谨慎使用它,因为如果使用过于频繁或在错误的上下文中使用,它会使代码更难阅读(这首先破坏了“使用”的全部意义,对吧?)。

【讨论】:

  • “整个范围”...范围的其余部分... 8-)
  • @Tony 我不是一个经验丰富的 C++ 程序员。它真的只是范围的其余部分吗?如果是这样,我将编辑我的答案。我习惯于使用两遍编译器将其应用于整个范围的语言。
  • C++ 使用 2 遍的唯一地方是类/结构内容,然后是允许通过访问说明符或功能对内容进行排序。
  • 知道了,谢谢托尼!更新了我的答案。
【解决方案2】:

无法停止 using namespace 在您的代码中。但是您可以对代码进行一些巧妙的更改来模拟这种效果。

  1. 拆分成各种.cpp文件 并仅将using namespace 用于那些 实际需要的文件
  2. 在同一个文件中,保留代码 using namespace设施 文件的底部,这样 上面的代码不会有 using 效果。
  3. 附上using namespace 在另一个命名空间/函数中。看 example

【讨论】:

  • Re 3,函数、块和命名空间范围的工作。 (class/struct/union 不允许使用命名空间,using 的函数只支持基类方法。)
  • @Tony,是的,这就是为什么我没有提到class/struct/union。事实上,我自己几天前就问过一个关于它的问题。 stackoverflow.com/questions/6326805/…
  • 好吧,你的问题也得到了我的 +1 :-)
【解决方案3】:

不,我认为您可以使用整个 .cpp 文件的名称空间,但如果您想使用来自其他名称空间的同名对象,您始终可以使用完全限定名称!

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2015-07-21
    • 2020-06-08
    • 2010-12-24
    • 2012-02-27
    • 2011-11-29
    相关资源
    最近更新 更多