2011-07-06 8 views
6

클래스를 정의하는 동안 네임 스페이스 별칭을 사용하려는 헤더 파일이 있습니다. 그러나 헤더 파일을 포함하는 모든 항목에이 별칭을 표시하고 싶지 않습니다.네임 스페이스 별칭 범위 지정 문제

// foo.h 
namespace qux = boost::std::bar::baz::qux; // ! exposed to the world 
class foo 
{ 
    // can't put a namespace alias here 

    // stuff using qux:: 
}; 

클래스 선언을위한 네임 스페이스를 어디에서 누출시키지 않고 별칭으로 만들 수 있습니까?

답변

12
namespace MyClassSpace 
{ 
namespace qux = boost::std::bar::baz::qux; 

class foo 
{ 
    // use qux:: 
}; 

} 

using MyClassSpace::foo; // lift 'foo' into the enclosing namespace 

이것은 대부분의 부스트 라이브러리는, 별도의 네임 스페이스에 모든 재료를 넣고 boost 네임 스페이스에 중요한 식별자를 들어 어떻게도입니다.

+0

깔끔함! 투표 재설정 후 +1. –

+0

@Kerrek : 피팅은 방금 repcap에 도달하여 리셋을 기다려야합니다! :) – Xeo

+0

바스 타드, 필사적으로 다음 2 시간 내에 내 것을 만들려고 노력하고 있습니다 .- –