std :: map с перечислением в качестве ключа

В настоящее время я пытаюсь создать 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: aucun opérateur Trouvé Qui Accete Unééééde de partie droite de type ‘InputsManagement :: Input :: MouseCode’ (возможно преобразование приемлемо) Win7 DirectX c: \ users \ maxime \ desktop \ DirectX тесты \ win7 directx \ win7 directx \ input.cpp 16

-1

Решение

Итак, цель кода — отобразить значения 0, 1 и 2 в другие значения? Используйте массив, проиндексированный MouseCode ценности.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector