는 : GCC 4.4은 다음과 같은 C++ 0X 코드를 허용합니다"열거 클래스"에뮬레이션 또는 고체 대안은 10.0 나는 다음과 같은 문제에 대한 해결책의 해키 종류를 찾고 있어요
enum class my_enum
{
value1,
value2
};
을 어느 다음과 같이 사용할 수 있습니다.
my_enum e = my_enum::value1;
모든 종류의 벨과 호루라기가 있습니다. MSVC 2010과 호환되도록이 코드를 작성하여 사용 구문이 변경되지 않도록하고 싶습니다. 나는 이미 here 전에 이것에 대해 숙고 해왔다. 그리고 대답은 받아 들여지지 만 enum과 enum 값에 대한 두 개의 서로 다른 이름에 대한 필요성 때문에이 두 가지 접근 방법의 호환성이 사라지게된다. 이것은 물론 C++ 0x 코드를 그대로 사용할 수 없게 만듭니다. 어떤 #undef
및 #define
속임수가이 문제를 해결할 수 있는지 궁금해했습니다. 과 같은 구문 (엄격한 유형 안전성 제외)을 사용할 수 있지만 최소한 동일한 구문을 사용할 수 있습니다. 감사!
아주 멋진 솔루션입니다. –
놀라운 솔루션. 이것은 위장해야합니다. – FailedDev
이 방법은 적어도 MSVC 10에서는 "switch"/'case "를 허용하지 않는 것 같습니다 ("C2051 : case expression not constant "를 얻습니다). 'enum'이 전형적으로 이런 방식으로 사용되기 때문에 이것은 큰 PITA입니다. –