所以,我试图弄清楚,如何在对象的层次结构中的对象之间传递指针。我正在写的实际程序是一个基于组件的游戏引擎,但我会尽可能地分解这个问题。
我现在的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,然后让child遍历全局父对象并在那里获取弱指针,这需要在向量中找到指向childs父对象的指针,这可能并不总是可行的。
我的另一个解决方案是将一个弱指针传递给childs父构造函数,并在childs父构造函数中存储一个指向其自身的弱指针,这看起来确实有点混乱。
我现在在问是否有更好的解决方案我错过了。
发布于 2019-10-14 08:33:35
谢谢,shared_from_this就是我要找的人。
https://stackoverflow.com/questions/58372662
复制相似问题