簡體   English   中英

C ++-以枚舉為鍵的std :: map

[英]C++ - std::map with an enum as key

我目前正在嘗試創建一個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équi accepte unpartédroite de type'InputsManagement :: Input :: MouseCode'(ou il n'可以接受轉換)Win7 DirectX c:\\ users \\ maxime \\ desktop \\ directx tests \\ win7 directx \\ win7 Directx \\ input.cpp 16

那么,代碼的目的是將值0、1和2映射到其他值嗎? 使用由MouseCode值索引的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM