我正在尝试创建一个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
答案 0 :(得分:2)
那么,代码的目的是将值0,1和2映射到其他值?使用由MouseCode
值索引的数组。