Can a C++ enum class have methods?

前端 未结 7 783
抹茶落季
抹茶落季 2020-12-12 17:44

I have an enum class with two values, and I want to create a method which receives a value and returns the other one. I also want to maintain type safety(that\'s why I use e

7条回答
  •  清歌不尽
    2020-12-12 18:11

    Concentrating on the description of the question instead of the title a possible answer is

    struct LowLevelMouseEvent {
        enum Enum {
            mouse_event_uninitialized = -2000000000, // generate crash if try to use it uninitialized.
            mouse_event_unknown = 0,
            mouse_event_unimplemented,
            mouse_event_unnecessary,
            mouse_event_move,
            mouse_event_left_down,
            mouse_event_left_up,
            mouse_event_right_down,
            mouse_event_right_up,
            mouse_event_middle_down,
            mouse_event_middle_up,
            mouse_event_wheel
        };
        static const char* ToStr (const type::LowLevelMouseEvent::Enum& event)
        {
            switch (event) {
                case mouse_event_unknown:         return "unknown";
                case mouse_event_unimplemented:   return "unimplemented";
                case mouse_event_unnecessary:     return "unnecessary";
                case mouse_event_move:            return "move";
                case mouse_event_left_down:       return "left down";
                case mouse_event_left_up:         return "left up";
                case mouse_event_right_down:      return "right down";
                case mouse_event_right_up:        return "right up";
                case mouse_event_middle_down:     return "middle down";
                case mouse_event_middle_up:       return "middle up";
                case mouse_event_wheel:           return "wheel";
                default:
                    Assert (false);
                    break;
            }
            return "";
        }
    };
    

提交回复
热议问题