2013-11-15 3 views
0

어떤 네임 스페이스에도 속하지 않는 클래스가 있습니다.네임 스페이스에서 충돌하는 클래스 이름

클래스 A (*).

내가 이름은 같지만 네임 스페이스

클래스 네임 스페이스 B의 부분의 일부와 함께 또 다른 클래스가

xyz.cpp에서

, 나는 아래에 있습니다

#include "..." 

using namespace B; 
// some code 
A::var; // This A should be part of (*) and not namespace B. 
// some code 

그러나 이후 클래스 이름이 충돌합니다. 오류가 발생합니다. 이 문제를 해결할 방법이 있습니까?

답변

1

using namespace 키워드는 지정된 이름 공간의 모든 이름을 전역 이름 공간으로 가져옵니다. 이미 전역 네임 스페이스에 class A을 선언 했으므로 충돌이 발생합니다.

해결책 : using namespace B을 사용하지 마십시오.

이 효과적으로 당신이 무슨 일을하는지입니다 :

namespace GLOBAL { 
    class A { ... }; 
}; 

namespace B { 
    class A { ... }; 
}; 

using namespace B /* export 'B::A' into 'GLOBAL' resulting in a conflict; */ ; 
+0

감사합니다. :: A :: var를 사용하여 전역 네임 스페이스에 액세스했습니다. – user682765

0

당신은

using namespace B; 

를 사용하는 대신

B::A::var 

처럼 사용할 수 없습니다.

관련 문제