Почему не объявление объявления класса работает, когда класс включен в другой класс
Это компилирует
#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();
};
Это не
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();
};
Я знаю, что могу переслать объявление и использовать указатель для Sprite, но почему здесь не работает пересылка объявлений. Не "класс Sprite"; говорит что спрайт существует? Я пытаюсь #include столько классов в .cpp и избегать его в .h любой ценой. Также классы не включают друг друга, поэтому нет необходимости использовать Sprite *. Я полагаю, что мое понимание того, что такое объявление вперед, неверно или что-то в этом роде, потому что я не вижу причины, по которой это не работает.
Заранее спасибо.