В настоящее время я пытаюсь создать 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
Итак, цель кода — отобразить значения 0, 1 и 2 в другие значения? Используйте массив, проиндексированный MouseCode
ценности.
Других решений пока нет …