2017-12-26 16 views
0

C++로 여러 구조체 요소의 열거 형을 만들려고합니다 (실제로 C와 유사 해 보일 수 있습니다. C++과 비슷한 모양으로 만들려는 제안이 있으면 그것). 여기에 코드입니다 :구조체 요소 열거 형 C++

struct Vect 
{ 
    int x; 
    int y; 
}; 

enum Direction 
{ 
    right = (Vect) {1, 0}, 
    left = (Vect) {-1, 0}, 
    down = (Vect) {0, 1}, 
    up = (Vect) {0, -1} 
}; 

내가 ++ g에서 얻을 오류는 " '권리'에 대한 열거 값이 상수 정수가 아닌"(그래서 다른 사람에 대한). 이것을 할 수 있습니까? 그렇지 않으면 내가 할 수있는 다른 방법을 찾을 수 있지만,이 솔루션은 아주 우아한 것으로 나타났습니다. 다음과 같이

+5

열거 형은 * 정수 * 값이어야합니다. 그리고 컴파일 타임 상수. –

+1

아니, 열거 형의 기본 유형은 정수 유형일 수 있습니다. – Quentin

+1

'const Vect right {1, 0};'을 열거 형으로 사용하지 못하게하는 것은 아무것도 없습니다. 그리고 아마'네임 스페이스 방향'? –

답변

2

당신이 원하는 모든 유형 Vect의 상수 식의 무리 인 경우, 당신이 그들을 정의 할 수 있습니다

namespace Direction 
{ 
    constexpr Vect right = { 1, 0 }; 
    constexpr Vect left = {-1, 0 }; 
    constexpr Vect down = { 0, 1 }; 
    constexpr Vect up = { 0, -1 }; 
} 

Vect 당신이 그것을 가능성 만드는 것입니다 리터럴 타입입니다 켰을 때. 꽤 많은 이유가 constexpr이 소개되었습니다.

+0

예. 감사합니다. :) 이걸 사용하겠습니다. – Grominet