授予一个从自己的类型管理其子级的类,每个子级都有一个指向其父级的指针。
class Class {
std::array<std::shared_ptr<Class>, 4> children;
std::weak_ptr<Class> parent;
}
A weak_ptr
,就像上面的代码一样,不起作用,因为它必须通过共享 ptr 进行初始化。
void initChild() {
subtrees[0] = std::make_shared<Class>(std::shared_ptr<Class>(this));
}
这显然会删除this
并导致错误。
是否有可能在不使用 raw 的情况下对父级进行弱引用pointers
,或者这是唯一的选择?