因此,我试图找出如何在对象的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父级中存储一个指向自身的弱指针,这似乎有点混乱。
我现在要问是否有我错过的更好的解决方案。
谢谢,shared_from_this正是我想要的。