【问题标题】:How can I avoiding typing namespace:: overly often in my code?如何避免在我的代码中过于频繁地键入 namespace::?
【发布时间】:2013-08-14 03:15:59
【问题描述】:

我使用 cocos2dx。当我使用其中的类时,我需要经常输入cocos2d::,除非我输入using namespace cocos2d;。

如何避免一直重复命名空间?

【问题讨论】:

标签: c++ cocos2d-iphone


【解决方案1】:

有几种方法可以使用来自其他命名空间的内容,而不必在每个实例上重复命名空间。

  • 导入整个命名空间:using namespace cocos2d; 您现在可以使用该命名空间的所有成员,仅使用其名称而不使用命名空间前缀。这可能会污染您自己的命名空间,其中可能有很多名称(取决于导入的命名空间的内容),这可能是不可取的。
  • 从该命名空间导入单个名称:using cocos2d::MyClassName; 这仅导入给定名称。好处是你的命名空间没有被污染。缺点是您必须为要导入的每个命名空间成员执行此操作。如果您只需要几个,那么这种方法很好。
  • 创建命名空间别名:namespace co = cocos2d; 现在您可以引用 cocos2d 命名空间的成员,就像它们是 co 命名空间的成员一样。
  • 创建类型别名(C++11 起):using CoClass = cocos2d::MyClassName; 然后您可以使用您选择的标识符来引用别名成员。当导入的类型隐藏您自己命名空间中的类型时,这会特别有用。

【讨论】:

  • 注意:很像 using namespace 在标题中是不可取的,所以我会避免在那里使用命名空间别名。
【解决方案2】:

Chris 的回答是正确且完整的,但我要补充一点,最好明确指定每个成员的命名空间以避免在包含您的头文件的其他文件中出现歧义。

using namespace cocos2d; 将在包含您的标头的每个文件中隐式使用该命名空间。您可以将其放在 .cpp 文件中。 using cocos2d::MyClassName; 和命名空间别名也是如此。

这些都可以,但你不应该使用它们。

See that answer 回答问题:C++ 标头中的“使用命名空间”

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-06-28
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多