> EventType a = EventType::CUSTOM + 1;
btw, this will give error but I guess it can be bypassed by using static_cast. Not a good way though
Force conversion seems not to be elegant.

The string for initialize `EventCustom` will be converted to `hash code`.
```cpp
EventCustom::EventCustom(const std::string& eventName)
: Event(**std::hash<std::string>()(eventName)**)
, _userData(nullptr)
{
}

EventListenerCustom* EventListenerCustom::create(const std::string& eventName, std::function<void(EventCustom*)> callback)
{
    EventListenerCustom* ret = new EventListenerCustom();
    if (ret && ret->init(**std::hash<std::string>()(eventName), callback)**)
    {
        ret->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(ret);
    }
    return ret;
}

```

Do you mean the `Event::getType` needs to return `Event::Type::Custom`, but in the std::unordered_map, it still use the hash code for key?