저는 C++ 네임 스페이스 개념을 좋아합니다. 이름 충돌을 피하면서 소스 코드를 간결하게 유지하는 데 도움이되기 때문입니다. .cpp 파일에서는 "using namespace"선언을 사용하여 매우 잘 작동합니다. 그러나 헤더 파일에서 "네임 스페이스 사용"이 현재 헤더 파일 내에서뿐만 아니라 이후에 컴파일되는 모든 것에 적용된다는 것을 의미하므로 네임 스페이스를 "손상 시키므로"사용할 수 없습니다. 이것은 부분적으로 네임 스페이스의 이점을 무효화합니다. 예를 들어 "ourlib :: networking :: IpAddress"와 "ourlib :: filesystem :: Path"클래스가 자주 사용되는 헤더 파일을 고려해보십시오.C++ 헤더 파일의 네임 스페이스
헤더 파일에서 "네임 스페이스 사용"- 선언의 효과를 제한하는 방법이 있습니까?
>이 일을 할 수 없다 (나는
namespace ourlib
내부의 모든 헤더를 가정) 글로벌 네임 스페이스로의주지 않고 직접 할 수 액세스lpAddress
이 될 것입니다 이것은 전역 네임 스페이스를 오염시킬 수 있습니다. <이것은 글로벌 네임 스페이스에 오염 될 것입니다. – Artyom오염에 의한 것인가에 달렸습니다. 제 생각에는 하나의 클래스를 가져 오는 것이 헤더를 포함하여 구현 파일로 제한되는 경우 벌금을 부과 할 수 있습니다. 다른 헤더들은 절대적으로 필요하다면, 대신 forward 선언문을 사용하십시오. 이것은 컴파일 시간을 향상시키기위한 것입니다. – OregonGhost
그 외의 것을 추가하는 것을 잊었습니다. 너와 함께. 제가 말했듯이, 저는 주로 정규화 된 이름을 사용합니다. – OregonGhost