¿Por qué no se anticipa la declaración de trabajo de clase cuando la clase se incluye en otra clase?
Esto compila
#include "Sprite.h"
class GameObject
{
public:
int x, y, w, h;
Sprite sprite;
public:
GameObject();
GameObject(int _x, int _y, int _w, int _h);
virtual ~GameObject();
};
Esto no
class Sprite;
class GameObject
{
public:
int x, y, w, h;
Sprite sprite;
public:
GameObject();
GameObject(int _x, int _y, int _w, int _h);
virtual ~GameObject();
};
Sé que podría reenviar la declaración y usar el puntero para Sprite, pero por qué la declaración de reenvío no funciona aquí. No "clasifica Sprite"; dice que existe Sprite? Estoy intentando #incluir tantas clases en .cpp y evitarlo en .h a toda costa. Además, las clases no se incluyen entre sí, por lo que no es necesario usar Sprite *. Supongo que no entiendo qué declarar hacia adelante es incorrecto o algo así porque no veo una razón por la cual esto no funciona.
Gracias por adelantado.