Error de compilación C2653: no es un nombre de clase o espacio de nombres

Así que últimamente he tenido este problema extremadamente frustrante con Visual C ++ 2012. Hasta hace unas horas, estaba escribiendo código muy bien y todo funcionaba como estaba previsto, hasta que decidí optimizar algunas cosas y eliminar algunas clases. Arreglé todos los errores que estaban apareciendo debido a eso, por ejemplo. false incluye, etc. Desafortunadamente, después de esto el compilador VS se volvió loco. Comenzó a darme errores como:

Error 14 error C2653: 'Class' : is not a class or namespace name

o incluso

Error 5 error C2143: syntax error : missing ';' before '}'
Error 4 error C2059: syntax error : '>'

Lo he comprobado varias veces y todo está en el lugar correcto: todos los encabezados incluidos, todos los símbolos colocados donde deberían estar.

Por lo que entiendo, el problema no está en mi código sino en el compilador en sí mismo ... Visual Studio puede ser realmente molesto a veces, supongo. De todos modos, realmente estaría agradecido si alguien pudiera ayudarme con esto.

(Por cierto, deshabilitar encabezados precompilados hizono trabajo)

Partes relevantes del código:

Error 14:

#include "PlayerEntity.h"
PlayerEntity::PlayerEntity(void) {} // This line causes the error

Error 5:

class GameScreen : public BaseScreen
{
public:
    ...
private:
    ...
}; // This line causes the error

Error 4:

private:
     std::vector<BaseEntity*> _EntityList; // This line causes the error

Todo el archivo PlayerEntity.h:

#ifndef PENTITY_H
#define PENTITY_H

#include "BaseEntity.h"

class PlayerEntity : public BaseEntity
{
public:
    PlayerEntity(void);
    PlayerEntity(float, float);
    virtual ~PlayerEntity(void);

    void render(sf::RenderWindow&);
    void update();
private:
    void init();
};

#endif

Todo el archivo GameScreen.h:

#ifndef GSCREEN_H
#define GSCREEN_H

#include "BaseScreen.h"
#include "BaseEntity.h"
#include "PlayerEntity.h"

class GameScreen : public BaseScreen
{
public:
    GameScreen(sf::Vector2u&);
    virtual ~GameScreen(void);

    void start();
    void stop();

    void render(sf::RenderWindow&);
    void update(void);

    void addEntity(BaseEntity*);
    void destoryEntity(int id);
private:
    std::vector<BaseEntity*> _EntityList;
    sf::Vector2u _ScreenDimensions;
};

#endif

Todo el archivo BaseEntity.h:

#ifndef BSENTITY_H
#define BSENTITY_H

#include "Input.h"
#include <SFML/Graphics.hpp>

class BaseEntity
{
public:
    BaseEntity(void);
    virtual ~BaseEntity(void);

    sf::Vector2f position;

    virtual void update(void);
    virtual void render(sf::RenderWindow&);
    void compare(BaseEntity*);
protected:
    sf::Texture *_EntityTexture;
    sf::Sprite  _EntitySprite;

    bool _isAlive;
    int  _id; 

    virtual void init();
};

#endif

Todo el archivo Input.h:

#ifndef INPUT_H
#define INPUT_H

#include "ScreenSystem.h"
#include <SFML/Window.hpp>

class Input
{
public:
    Input(void);
    Input(sf::RenderWindow*);
    virtual ~Input(void);

    static bool keyPressed(int);
    static bool keyReleased(int);

    static bool mouseHeld(int);
    static bool mouseReleased(int);
private:
    static sf::RenderWindow *_Window;
};

#endif

Todo el archivo ScreenSystem.h:

#ifndef GHANDLER_H
#define GHANDLER_H

#include "BaseScreen.h"
#include "MenuScreen.h"
#include "GameScreen.h"
#include <SFML/Window.hpp>

class ScreenSystem
{
public:
    ScreenSystem(void);
    ScreenSystem(sf::RenderWindow*);
    virtual ~ScreenSystem(void);

    BaseScreen *getCurrentScreen(void);
    void setScreen(int);
private:
    int _currentScreenID;

    std::vector<BaseScreen*> _Screens;
    sf::RenderWindow *_Window;
};

#endif

Respuestas a la pregunta(2)

Su respuesta a la pregunta