无法从数组中的 Uint8 转换为 Int

问题描述 投票:0回答:0

我有这个 SDL2 C 代码,它试图检查用户是否按下鼠标:

struct SCGUI_Mouse {
    char button[5]; //SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT, SDL_BUTTON_X1, SDL_BUTTON_X2
};

extern struct SCGUI_Mouse mouse;

//...

    while (SDL_PollEvent(&event)) {
        switch (event.type) {
            case SDL_KEYDOWN:
                input.keys[event.key.keysym.scancode] = true; //Key input works
                break;
            case SDL_KEYUP:
                input.keys[event.key.keysym.scancode] = false;
                break;
            case SDL_MOUSEBUTTONDOWN:
                mouse.button[event.button] = true; //Mouse input does not work: error (array subscript is not an integer)
                break;
            case SDL_MOUSEBUTTONUP:
                mouse.button[event.button] = false;
                break;

        }
    }

但是,根据文档,由于 event.button 是 Uint8 类型,我无法将其设置为数组索引,因为它不是整数。我尝试使用

mouse.button[(int) event.button]
转换类型,但这只会给我错误“在需要整数的地方使用聚合值。”

我可以在这里做什么来解决这个问题?

c winapi sdl
© www.soinside.com 2019 - 2024. All rights reserved.