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

时间:2016-10-08 16:38:44

标签: c++ enums syntax-error stdmap

我正在尝试创建一个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语言,这种语法非常有效,而且很奇怪,这不是这种情况。

感谢您的帮助!

编辑1: 错误信息是(法语,抱歉......): Erreur C2679'['binaire:aucunopérateurtrouvéquiaccepteunopérandedepartie droite de type'InputsManagement :: Input :: MouseCode'(ou il n'existe pas de转换可接受)Win7 DirectX c:\ users \ maxime \ desktop \ directx tests \ win7 directx \ win7 directx \ input.cpp 16

1 个答案:

答案 0 :(得分:2)

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