C ++如何防止导入循环
C++ how to prevent import loops
我现在有点一头雾水,所以我正在尝试堆栈溢出。我的问题是我有一个名为“Scene”的类,它将有一张“GameObject”的地图。问题是这些 GameObject 需要使用场景中的某些功能,因此我创建了一个分配给主场景的 Scene*。这种情况的问题是我在一个循环中导入场景,其中包括包含场景的游戏对象(并且它继续)。如果您认为 5isnis 不清楚,请随时发表评论,我会提供更多详细信息或编辑此 post thx.
Scene.h
class Scene
{
public:
sf::RenderWindow* window;
_Manager manager;
sf::Color backgroundColor;
std::string name;
std::map<std::string, GameObject*> gameObjects;
Scene();
Scene(std::string name);
virtual void Start() = 0;
virtual void Update() = 0;
virtual void Draw() = 0;
void _Update();
};
GameObject.h
class GameObject : public Object
{
private:
Scene* scene;
std::vector<Component*> components;
public:
Transform* transform = new Transform;
void AddComponent(Component* component);
Component* GetComponent(std::string type);
GameObject* Find();
void Instantiate(GameObject* gm, Transform* transform);
void Start();
void Update();
};
对于那些遇到同样问题的人,我只是忘记了您可以进行前向声明,当您需要使用完整的 class 时,只需将您需要的文件导入 [=12= 的 .cpp 文件中].
我现在有点一头雾水,所以我正在尝试堆栈溢出。我的问题是我有一个名为“Scene”的类,它将有一张“GameObject”的地图。问题是这些 GameObject 需要使用场景中的某些功能,因此我创建了一个分配给主场景的 Scene*。这种情况的问题是我在一个循环中导入场景,其中包括包含场景的游戏对象(并且它继续)。如果您认为 5isnis 不清楚,请随时发表评论,我会提供更多详细信息或编辑此 post thx.
Scene.h
class Scene
{
public:
sf::RenderWindow* window;
_Manager manager;
sf::Color backgroundColor;
std::string name;
std::map<std::string, GameObject*> gameObjects;
Scene();
Scene(std::string name);
virtual void Start() = 0;
virtual void Update() = 0;
virtual void Draw() = 0;
void _Update();
};
GameObject.h
class GameObject : public Object
{
private:
Scene* scene;
std::vector<Component*> components;
public:
Transform* transform = new Transform;
void AddComponent(Component* component);
Component* GetComponent(std::string type);
GameObject* Find();
void Instantiate(GameObject* gm, Transform* transform);
void Start();
void Update();
};
对于那些遇到同样问题的人,我只是忘记了您可以进行前向声明,当您需要使用完整的 class 时,只需将您需要的文件导入 [=12= 的 .cpp 文件中].