能否在c++中向前声明一个命名空间别名?

Can you forward-declare a namespace alias in C++?

本文关键字:一个 命名空间 别名 声明 c++      更新时间:2023-10-16

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

e。g我想要namespace GE = Graphics::Engine;不包括任何图形引擎头。

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

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

由于名称空间在声明后是开放的,因此只需…预先声明:

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

我不建议这样做。这是可以做到的,而且很简单,但是您实际上在做的是将您选择的别名强加给标题的所有用户。

假设您使用这种技术构建了一个组件,而通用电气(General Electric)购买了该软件,突然他们就会遇到任意的名称空间冲突。你毫无缘由地制造了一场冲突。选择一个易于使用且尽可能唯一的名称空间方案,然后遵循它。添加快捷方式只会使代码变得复杂(GE::typeGraphics::Engine::type之间有什么区别?)