2014-06-24 4 views
0

나는 기본 클래스 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

네임 스페이스의 이름을 기본 클래스와 동일하게 지정하지 않아야합니까?

으로합니다. 네가 지적한 갈등뿐만 아니라 네임 스페이스 범위 내의 이름이 중첩 된 범위 내에 숨겨져있을 때 때때로 필요합니다. 어느 문제도 특히 심각하지만, 왜 인생을 필요한 것보다 힘들게합니까?

Entities 네임 스페이스는 여러 엔터티 형식을 포함하고 있으므로이 이름 공간을 호출 할 수 있습니다. 그리고 아마도 기본 클래스 Base을 호출 할 것입니다. 왜냐하면 네임 스페이스가 기반이되는 것의 설명을 완성하기 때문입니다.

나는 네임 스페이스 (lower_case)와 클래스 (Capitalised)에 대해 다른 명명 규칙을 사용하는 경향이 있지만 이는 미학이나 임의의 회사 사전에 적합하지 않을 수 있습니다.

+0

우리의 명명 규칙은 네임 스페이스와 유형이 PascalCase를 사용해야한다고 규정하지만 복수형을 사용하는 것이 좋습니다. 감사합니다! – zennehoy

관련 문제