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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage