如何在代码中避免经常输入namespace ::?

时间:2013-08-14 03:16:00

标签: c++ cocos2d-iphone

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

如何避免不断重复命名空间?

2 个答案:

答案 0 :(得分:7)

有几种方法可以使用其他命名空间中的东西而不必在每个实例上重复命名空间。

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

答案 1 :(得分:3)

Chris的回答是正确和完整的,但我想补充说明一点,明确指定每个成员的命名空间是为了避免在包含头文件的其他文件中出现歧义。

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

这些都会奏效,但你不应该使用它们。

See that answer问题:c ++标题中的“using namespace”