我有一个从基类Entity
派生的相当大的类层次结构。我想将这些类分组到一个单独的命名空间。目前,这看起来如下:
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
有点不幸,所以我想知道这是不是一个好主意?在全局命名空间中添加using namespace Entity
或typedef Entity::Entity Entity
不起作用(因为这会与namespace Entity
冲突)。它们可以添加到main
但是......
我应该避免将命名空间命名为与其中的基类相同吗?或者这是常见做法吗?
答案 0 :(得分:0)
我是否应该避免将命名空间命名为与其中的基类相同?
我愿意。除了你指出的冲突之外,从内部引用命名空间也很尴尬(有时在命名空间范围内的名称隐藏在嵌套范围内时是必要的)。这两个问题都不是特别严重,但为什么要让生活变得更加艰难?
您可以调用命名空间Entities
,因为它包含多个实体类型;和/或可能调用基类Base
,因为命名空间完成了对它的基础的描述。
我倾向于对命名空间(lower_case
)和类(Capitalised
)使用不同的命名约定,但这可能不适合您的美学或任意公司指令。