Почему не объявление объявления класса работает, когда класс включен в другой класс

Это компилирует

#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 *. Я полагаю, что мое понимание того, что такое объявление вперед, неверно или что-то в этом роде, потому что я не вижу причины, по которой это не работает.

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос