2012-06-26 4 views
2

Я подозреваю, что это очень незначительная проблема, но я потратил несколько часов, пытаясь ее исправить, и ничего не нашел.Отсутствует точка с запятой в объявлении класса

В Game.h (файлу заголовка), я следующее:

#pragma once 

#include "PlayEngine.h" 

class Game { 

public: 
    int Init(); 
    int Run(); 
    int Shutdown(); 

private: 
    enum State { ST_MENU, ST_PLAYING } state; 
    PlayEngine* playengine_; 
}; 

компилятор генерирует ошибку синтаксиса на PlayEngine* playengine_, жалуясь, что недостающее ; перед *. PlayEngine - это класс, который я определил в других местах.

Что мне не хватает?

+4

«PlayEngine.h» прямо или косвенно пытается включить «Game.h»? –

+0

Этот код выглядит правильно, поэтому ошибка, вероятно, в коде, где вы определили 'PlayEngine' (который, мы надеемся, включен/включен в' PlayEngine.h'). –

ответ

7

Заменить

#include "PlayEngine.h" 

с

class PlayEngine; 

декларация достаточно для этого случая. (и я ставлю, что источником является круговое включение)

+0

Ничего себе, спасибо! Да, взглянув на мой код более внимательно, я нашел круговое включение. (Upvoting требует 15 карм, я постараюсь и помню, чтобы вернуться в верхнюю часть, как только смогу) –

-1

Удалить состояние в конце объявления перечисления. и объявить переменную отдельно.

#pragma once 
#include "PlayEngine.h" 
class Game { 
    public:  
     int Init();  
     int Run();  
     int Shutdown(); 
    private:  
     enum State { ST_MENU, ST_PLAYING }; 
     State state; 
     PlayEngine* playengine_; 
}; 
Смежные вопросы