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 文件中].