我试图编写一个单例类来保存来自用户的输入状态(鼠标/键盘数据)。 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;
// ...
};