[英]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.