Solución:
Tiene una dependencia de inclusión circular. Collision.h incluye Player.hy viceversa. La solución más sencilla es eliminar #include "Collision.h"
de Player.h
, ya que el Collision
la clase no es necesaria en el Player
declaración. Además de eso, parece que algunas de tus inclusiones en Collision.h
puede ser reemplazado por declaraciones futuras:
// forward declarations
class Player;
class Platform;
class Collision
{
public:
Collision(void);
~Collision(void);
static bool IsCollision(Player &player, Platform& platform);
};
A continuación, puede poner las inclusiones en Collision
archivo de implementación.
Ese es un error bastante común: tiene dependencia circular de inclusión.
Mirando su código, debe reemplazar #include "Player.h"
con class Player;
en Collision.h
. Esto se llama “declaración de avance” y romperá la dependencia circular.
Además, sería bueno agregar protectores de inclusión, por ejemplo:
#ifndef MY_PLAYER_CLASS
#define MY_PLAYER_CLASS
...
#endif
Y esto debe hacerse para cada encabezado que escriba.
Dependencia circular o está utilizando un compilador C para código C ++