以enum作为键的std::map

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

本文关键字:std map enum      更新时间:2023-10-16

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

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

这里没有问题。

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

    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语言,在这些语言中,这种语法可以完美地工作,而这里的情况却不是这样,这很奇怪。

谢谢你的帮助!

EDIT 1:错误信息是(法语,抱歉…):Win7 DirectX c:users maximum desktop DirectX tests Win7 DirectX Win7 DirectX Input .cpp 16

那么,代码的目的是将值0、1和2映射到其他值?使用由MouseCode值索引的数组