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