2

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

例如,我想要namespace GE = Graphics::Engine;不包括任何图形引擎标题。

4

3 回答 3

8

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

namespace Graphics {
    namespace Engine {}
}
namespace GE = Graphics::Engine;
于 2013-03-26T13:03:55.360 回答
8

由于命名空间在声明后是开放的,所以只需...预先声明它们:

namespace Graphics{ namespace Engine{} }
namespace GE = Graphics::Engine;
于 2013-03-26T13:04:24.383 回答
2

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

假设您使用这种技术构建了一个组件,而通用电气购买了该软件,突然之间他们得到了命名空间的任意冲突。您正在无缘无故地制造冲突。选择一个易于使用且尽可能独特的命名空间方案,然后遵循它。GE::type添加快捷方式只会使代码复杂化(和之间有什么区别Graphics::Engine::type?)

于 2013-03-26T13:21:15.927 回答