728x90

enum 값을 사용할 때 for 문으로 enum 값을 증가시키면서 사용하는 방식을 사용할 수도 있습니다. 이럴 때 enum을 정의한 후 바로 증가 연산자를 사용할 수 없고 operator++를 재정의 해주어야 합니다.

enum fruit {
	frApple,
    frOrange,
    
    num_of_fruit
};

fruit& operator++(fruit& fr) {
    fr = static_cast<fruit>(static_cast<int>(fr) + 1);
    return fr;
}

fruit operator++(fruit& fr, int) {
    fruit temp = fr;
    fr = static_cast<fruit>(static_cast<int>(fr) + 1);
    if (fr > num_of_fruit) {
        fr = num_of_fruit;  
    }
    return temp;
}

첫 번째 operator++는 전위 증가 연산자를 위한 재정의, 두 번째 operator++는 후위 증가 연산자를 위한 재정의 함수입니다.

 

728x90

'Programming > C++' 카테고리의 다른 글

[C++] boost windows 비동기 처리하기  (2) 2023.10.23
[C++] Template(2)  (0) 2023.09.22
[C++] Template(1)  (2) 2023.09.19
[C++] std::forward_list, std::list  (0) 2023.07.18
[C++] std::array, std::vector  (0) 2023.07.12

+ Recent posts