如何在Hirarchy类中传递智能指针

问题描述 投票:0回答:1

因此,我试图找出如何在对象的Hirarchy中的对象之间传递指针。我写的实际程序是一个基于组件的游戏引擎,但我会尽力解决该问题。

我当前的Hirarchy看起来像这样,我有3个类,一个父类,它基本上控制着所有子对象的生存期,如果它被破坏,则其他所有事情都将遵循:

Parent.h:

    class Parent
    {
    private:
        std::vector<std::shared_ptr<Object>> objects;
    };

一个中间对象,它控制其子对象的生存期:

Object.h:

    class Object
    {
    public:
        Parent* parent;

    private:
        std::vector<std::shared_ptr<Child>> childObjects;
    };

和一个子对象:

Child.h:

    class Child
    {
    public:

        std::weak_ptr<Object> parent;
    };

现在的问题是,Child对象需要对其父对象的引用,但是拥有Childs父对象的所有共享指针都位于Global Parent中,而仅通过指向Childs Parent的指针创建弱指针将不会工作。

我提出了两个解决方案,要么传递指向Child的普通指针,然后让孩子遍历到Global父对象,然后在那里获得弱指针,这将需要在向量中找到指向childs父对象的指针,然后可能并不总是可能的。

我拥有的另一种解决方案是将一个弱指针传递给childs父级构造函数,并在其childs父级中存储一个指向自身的弱指针,这似乎有点混乱。

我现在要问是否有我错过的更好的解决方案。

c++ pointers smart-pointers
1个回答
0
投票

谢谢,shared_from_this正是我想要的。

© www.soinside.com 2019 - 2024. All rights reserved.