你能在C ++中转发声明一个名称空间别名吗?

时间:2013-03-26 13:01:39

标签: c++ namespaces

我想在共享标头中设置一些常用别名,以便各个标头不必单独声明它。但是我不希望在此共享头中包含目标命名空间的头,只声明别名。这可能吗?

例如,我希望namespace GE = Graphics::Engine;不包含任何图形引擎标题。

3 个答案:

答案 0 :(得分:8)

如果您事先声明名称空间,则可以:

namespace Graphics {
    namespace Engine {}
}
namespace GE = Graphics::Engine;

答案 1 :(得分:8)

由于名称空间在声明之后是打开的,所以......先声明它们:

namespace Graphics{ namespace Engine{} }
namespace GE = Graphics::Engine;

答案 2 :(得分:2)

我会建议不要这样做。它可以完成并且很简单,但是您实际上正在做的是强制您在标头的所有用户上选择别名。

假设您使用此技术构建组件并且通用电气购买该软件,突然他们得到名称空间的任意冲突。你没有特别的原因造成冲突。选择一个易于使用且尽可能唯一的命名空间方案,然后按照它进行操作。添加快捷方式只会使代码复杂化(GE::typeGraphics::Engine::type之间的区别是什么?)