2012-06-11 5 views
1

Я пытаюсь написать одноэлементный класс, чтобы удерживать состояние входов от пользователя (данные мыши/клавиатуры). SDL API возвращает данные с клавиатуры в массив указателей Uint8, однако, почему я пытаюсь создать указатель 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; 
}; 
+2

Вы включили _whatever SDL header_, который определяет 'Uint8'? И, пожалуйста, пожалуйста, не называйте это _keyword _... –

+0

Принадлежности, я отредактировал вопрос. Я не уверен, откуда взялось определение, SDL или иначе. Тем не менее, в качестве проверки я вернулся к старому файлу, который использует ошибку Uint8 w/o и включает в себя все те же заголовочные файлы, без везения. – Donutfiend84

+0

Замечание: с помощью класса singleton вы должны сделать свой конструктор закрытым. Второй [убедитесь, что вы действительно хотите синглтон] (http://en.wikipedia.org/wiki/Singleton_pattern#Drawbacks) – Shahbaz

ответ

1

Тип Uint8 является ЬурейиМ, который определен в одном из заголовка SDL. Если вы хотите использовать его, вам необходимо включить заголовок SDL.h в свой файл.

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

class InputState { 
public: 

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

    // ... 

public: 
    Uint8 *keys; 

    // ... 
}; 
+0

Thats сделал это. У меня сложилось впечатление, что Uints были стандартными типами данных. Благодарю. – Donutfiend84

+1

@ Donutfiend84, 'uint8_t' является частью' '. – chris