C++ 使用命名空间隔离类的层次结构
我有一个相当大的从基类实体派生的类层次结构。我想将这些类分组到一个单独的名称空间中。目前,情况如下所示:C++ 使用命名空间隔离类的层次结构,c++,namespaces,C++,Namespaces,我有一个相当大的从基类实体派生的类层次结构。我想将这些类分组到一个单独的名称空间中。目前,情况如下所示: namespace Entity { class Entity { //... }; class A : public Entity { // Instead of AEntity from before. //... }; class B : public Entity { // Instead of BEnt
namespace Entity {
class Entity {
//...
};
class A : public Entity { // Instead of AEntity from before.
//...
};
class B : public Entity { // Instead of BEntity from before.
//...
};
}
int main() {
// Example usage:
Entity::Entity *entity = new Entity::B();
delete entity;
}
不得不写Entity::Entity有点不幸,所以我想知道这是否是个好主意?在全局命名空间中使用namespace实体或typedef实体::实体实体添加不起作用,因为这将与命名空间实体冲突。它们可以添加到主菜单中
我是否应该避免将名称空间命名为与其中的基类相同的名称空间?还是这是常见的做法
我是否应该避免将名称空间命名为与其中的基类相同的名称空间
我会的。正如您所指出的冲突一样,从名称空间本身引用名称空间会很尴尬,有时当名称空间范围内的名称隐藏在嵌套范围内时,这是必要的。这两个问题都不是特别严重,但为什么要让生活变得更加艰难呢
您可以调用名称空间实体,因为它包含多个实体类型;和/或可能调用基类base,因为名称空间完成了对其基础的描述
我倾向于对名称空间使用不同的命名约定(小写和大写),但这可能不符合您的审美观或任意的公司指令。我们的命名约定规定名称空间和类型应使用PascalCase,但使用复数形式是一个好主意,谢谢!