Hi @winipcfg ,
I didn't use `enum class` was because I changed the key of listener map from `string` to `int`.
So the custom event had to use `int` as key. I defined a normal enumeration like:
```
    enum EventType
    {
        TYPE_TOUCH = 1,
        TYPE_KEYBOARD = 3,
        TYPE_ACCELERATION,
        TYPE_CUSTOM
    };
```

The custom event should be larger than  or equal to `TYPE_CUSTOM`.
But the `enum class` is strong type.
```
EventType a = EventType::CUSTOM + 1;
```
will not work.

I thought about this a lot. I think custom event should not use integer for initialization. 
Instead, it should use `string` to initialize, then, convert it to `hash code` by `std::hash`.
In this way, `enum class` will make scene.

Thanks for your advise. I will update this PR soon.