¿Qué es el error C2061:error de sintaxis:identificador?

¿Qué es el error C2061:error de sintaxis:identificador?

Tiene una dependencia de inclusión circular. Collision.h incluye Player.h y viceversa. La solución más simple es eliminar #include "Collision.h" de Player.h , desde el Collision la clase no es necesaria en el Player declaración. Además de eso, parece que algunas de sus inclusiones en Collision.h puede ser reemplazado por declaraciones hacia adelante:

// 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 una dependencia de inclusión circular.

Mirando su código, debe reemplazar #include "Player.h" con class Player; en Collision.h . Esto se llama "declaración directa" y romperá la dependencia circular.

Además, sería bueno agregar guardias 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á usando un compilador C para código C++