switch 문에 강력한 형식의 열거 형을 사용하는 경우에는 int
으로 명시 적 캐스트를 피할 수있는 방법이 있습니까? n3242 초안에서 강력한 형식의 열거 형을 사용하는 스위치 문
/// @desc an enumeration of the states that the session can be in.
enum class State
{
Created,
Connected,
Active,
Closed
};
State sesState = session->GetState();
switch (static_cast<int>(sesState))
{
case static_cast<int>(Session::State::Created):
// do stuff.
break;
case static_cast<int>(Session::State::Connected):
// do stuff.
break;
}
:
6.4.2 switch 문 [stmt.switch]
2 조건은 일체형, 열거 형 또는 클래스 타입이어야한다 정수 또는 열거 형에 대한 하나의 비 명시 적 변환 함수가 존재하는 경우 (12.3).
는 포함 열거 형은 강력하게 열거를 입력합니까하거나 int
에 명시 적 변환을 필요로하기 때문에 그들은 switch
제표와 호환되지 않습니다?
http://ideone.com/ZEJcs - 변환없이 컴파일합니다. –
가능한 복제본 [C++ 0x의 enum 클래스 전환] (0120-336-005) – lpapp