C++ 如何避免在代码中过多地键入namespace::呢?

C++ 如何避免在代码中过多地键入namespace::呢?,c++,cocos2d-iphone,C++,Cocos2d Iphone,我使用cocos2dx。当我使用它中的类时,我需要经常键入cocos2d::,除非我使用名称空间cocos2d键入 如何避免一直重复名称空间?有几种方法可以使用其他名称空间的内容,而不必在每个实例上重复名称空间 导入整个名称空间:使用名称空间cocos2d您现在可以仅按名称使用该名称空间的所有成员,而不使用名称空间前缀。这可能会用相当多的名称(取决于导入的名称空间的内容)污染您自己的名称空间,这可能是不可取的 从该名称空间导入单个名称:使用cocos2d::MyClassName这仅导入给定名

我使用cocos2dx。当我使用它中的类时,我需要经常键入
cocos2d::
,除非我使用名称空间cocos2d键入


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

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

  • 导入整个名称空间:
    使用名称空间cocos2d
    您现在可以仅按名称使用该名称空间的所有成员,而不使用名称空间前缀。这可能会用相当多的名称(取决于导入的名称空间的内容)污染您自己的名称空间,这可能是不可取的
  • 从该名称空间导入单个名称:
    使用cocos2d::MyClassName这仅导入给定名称。好处是您的名称空间没有被污染。缺点是,您必须为每个要导入的命名空间成员执行此操作。如果您只需要一些,那么这种方法是好的

  • 创建名称空间别名:
    namespace co=cocos2d
    现在您可以引用
    cocos2d
    名称空间的成员,就像它们是
    co
    名称空间的成员一样
  • 创建类型别名(从C++11开始):
    使用CoClass=cocos2d::MyClassName然后,您可以使用您选择的标识符引用别名成员。当导入的类型在您自己的命名空间中隐藏类型时,这尤其有用

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

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

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


      关于C++标题中使用“命名空间”的问题:如何发布一个事例?<代码>命名空间CO= COSCO2D;

      然后您可以执行
      co::stuff
      而不是
      cocos2d::stuff
      。您应该研究名称空间别名。请参阅注释:与
      非常相似,在头中使用名称空间
      是不可取的,因此我将避免在那里使用名称空间别名。