C++ - std::map 以枚举作为键

C++ - std::map with an enum as key

我目前正在尝试创建一个 std::map 来存储键盘每个键的状态。为此,我创建了以下地图:

static std::map<enum MouseCode, enum InputState> mousePressedMap;

这里没问题。

为了注册状态,我创建了一个由我的 main class 调用的函数:

    void Input::ReadUserInput(enum Input::MouseCode mouseCode, enum Input::InputState inputState) {
    mousePressedMap[mouseCode] = inputState;
}

这里我遇到了问题:我在 mousePressedMap 的“[”上遇到错误,说:没有“[]”运算符对应于那些操作数。 我也做不到:

    void Input::ReadUserInput(enum Input::MouseCode mouseCode, enum Input::InputState inputState) {
    mousePressedMap[MouseCode::LeftButton] = InputState::DOWN;
}

我遇到了同样的错误。

此外,我认为错误不是来自我的枚举:

        /// <summary>
    /// <para>Enumeration to set parameters to the mouse buttons handling function. The mouse code defines which button has been called.</para>
    /// </summary>
    enum MouseCode {
        LeftButton = 0,
        MiddleButton = 1,
        RightButton = 2
    };
    /// <summary>
    /// <para>Enumeration to set parameters to the mouse buttons handling function. The input state is the current state of the button</para>
    /// </summary>
    enum InputState {
        /// <summary>
        /// Just pressed.
        /// </summary>
        DOWN,
        /// <summary>
        /// Just released.
        /// </summary>
        UP,
        /// <summary>
        /// Was already pressed the last frame.
        /// </summary>
        PRESSED,
        /// <summary>
        /// Is not currently activated and wasn't the last frame.
        /// </summary>
        INACTIVE
    };

谁能解释一下为什么?我来自 C# 和 Java 语言,在这些语言中,这种语法可以完美地工作,很奇怪这里不是这种情况。

感谢您的帮助!

编辑 1: 错误信息是(法语,对不起...): Erreur C2679 '[' binaire:aucun opérateur trouvé qui accepte un opérande de partie droite de type 'InputsManagement::Input::MouseCode' (ou il n'existe pas de conversion acceptable) Win7 DirectX c:\users\maxime\desktop\directx tests\win7 directx\win7 directx\input.cpp 16

所以,这段代码的目的是将值0、1、2映射成其他值?使用由 MouseCode 值索引的数组。