我试图编写一个单例类来保存来自用户的输入状态(鼠标/键盘数据)。 SDL API以Uint8指针数组的形式返回键盘数据,但是,为什么我尝试创建Uint8指针,却在uint8行处得到了以下错误:

error C2143: syntax error : missing ';' before '*'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

我已经使用过Uint8作为数据类型,但之前没有对其进行定义,所以我不确定是什么导致了此问题。这是我的代码:

class InputState {
public:

    InputState()
    {};
    ~InputState()
    {};


    static InputState *getInputState(void)
    {
        static InputState *state = new InputState();

        return state;
    };

public:
    Uint8 *keys;

    struct MouseState
    {
        int LeftButtonDown;
        int RightButtonDown;
        int MiddleButtonDown;

        int x;
        int y;

        MouseState ()
        {
            LeftButtonDown = 0;
            RightButtonDown = 0;
            MiddleButtonDown = 0;

            x = 0;
            y = 0;
        }
    };

    MouseState *mouseState;
};

最佳答案

Uint8类型是在SDL header 之一中定义的typedef。如果要使用它,则需要在文件中包含SDL.h header 。

// You need this include if you want to use SDL typedefs
#include <SDL.h>

class InputState {
public:

    InputState()
    {};
    ~InputState()
    {};

    // ...

public:
    Uint8 *keys;

    // ...
};

10-08 14:06