【发布时间】:2018-12-02 09:15:46
【问题描述】:
在 C++ 中,您可以声明一个类,然后使用以下语法将其名称注入多个名称空间
namespace A
{
class MyT{};
}
namespace B
{
using A::MyT;
}
假设我的代码中的 A 和 B 代表不同类别的类,它们不仅仅是彼此的子集,而且 MyT 实际上是属于这两个类别的类。 像我展示的那样在两个命名空间中定义类名是否被认为是一种好习惯? 这种技术有潜在的缺点吗?
提前谢谢你
编辑: 在这种情况下使用的目的不是缩短声明,而是使其在不同的上下文中更具可读性,以便在某些地方可以将其称为 A::MyT,而在其他地方称为 B::MyT,具体取决于什么是类在用户上下文中的逻辑含义。 例如,如果 MyT 表示一扇门,并且是一个形状对象,其接口在 Geometry 命名空间中定义,但它在 Building 命名空间的上下文中使用,那么在某些情况下将其用作 Geometry::MyT 是有意义的,在其他情况下作为建筑::MyT。 当然,为了减少混淆的可能性,我在其原始命名空间中声明类的同一标头中声明了命名空间注入
【问题讨论】:
标签: c++ namespaces