2010-02-15 3 views
3

Visual Studio 2005가 있습니다. 내 헤더 파일 중 하나는 다음과 같은 열거 형을가집니다.표준 라이브러리를 포함하면서 모호함

typedef enum {scalar, array, set} increment;

헤더 파일을 포함 시키려고하면 "설정"에 대한 모호성 오류가 발생합니다. 이 cpp 파일에 std :: set을 사용하고 있습니다. 문제는 컴파일러가 std :: set과 열거 형 집합을 구별 할 수 없다는 것입니다.

어떤 제안

답변

6

하지 마십시오 std 네임 스페이스를 전역 네임 스페이스로 가져옵니다. STL 세트가 std 네임 스페이스에 있으므로 헤더에 using namespace std 행이 없으면 충돌을 일으키지 않아야합니다. 그 외에도 enum을 리팩토링하십시오.

0

는 "E"

열거 E_increment {eScalar, eArray, ESET} 같은과 일정 당신의 열거 접두어를 시도 새로운 네임 스페이스를 선언하지 않고이 모호성을 해결하기 위해

1

파일에 (또는 포함 된 헤더에) using namespace std;이있는 경우 문제가 될 수 있습니다.

-1

C++에서이 문제를 해결하는 일반적인 방법은 더 구체적인 값 이름을 사용하는 것입니다. 예를 들어, Qt enum GestureType을보십시오. 그 값은 단지 "Tap"과 "Pan"보다는 TapGesture와 PanGesture와 같은 이름입니다. 귀하의 경우에는 내가 제안 :

C의 다음 버전에서
enum increment { scalar_increment, array_increment, set_increment }; 

는 ++ strong enums의 형태로 적절한 해결책이 될 것입니다.

+0

-1 ....... 왜? –

관련 문제