Warum wird die Deklaration der Klassenarbeit nicht weitergeleitet, wenn die Klasse in einer anderen Klasse enthalten ist

Dies kompiliert

#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();
};

Das geht nicht

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();
};

Ich weiß, dass ich die Deklaration weiterleiten und den Zeiger für Sprite verwenden kann, aber warum funktioniert die Weiterleitungsdeklaration hier nicht. Nicht "Klasse Sprite"; sagt, dass Sprite existiert? Ich versuche, # so viele Klassen wie möglich in .cpp einzuschließen und es in .h um jeden Preis zu vermeiden. Die Klassen schließen sich auch nicht ein, sodass Sprite * nicht verwendet werden muss. Ich vermute, mein Verständnis dafür, was Forward Declaring ist, ist falsch oder so, weil ich keinen Grund sehe, warum dies nicht funktioniert.

Danke im Voraus