m.t*_*cey 0 c++ recursion unique-ptr
我有一个类充当二叉树中的节点,我想从该类内部调用的方法之一是递归的,并且需要将自身传递给树中的下一个节点,以便下一个节点知道它的自己的父母。我不想存储类成员父级,因为我想避免使用 shared_ptr。
代码如下所示:
void MyClass::expand(MyClass* parent){
for (int i = 0; i < children.size; i ++){
children[i]->doSomethingWithParent(parent);
children[i]->expand(this);
}
return;
}
Run Code Online (Sandbox Code Playgroud)
但我想传递一个 unique_ptr 而不是原始指针。但是,指向“this”的指针已经被 unique_ptr 包裹在其他地方,所以我不想实例化另一个。是否有可能做到这一点?
如果有任何我应该知道的设计模式,请告诉我。
任何帮助表示赞赏
根本不要使用指针。您没有获得所有权,该参数不是可选的,因此请使用参考:
void MyClass::expand(MyClass& parent){
for (int i = 0; i < children.size; i ++){
children[i]->doSomethingWithParent(parent);
children[i]->expand(*this);
}
return;
}
Run Code Online (Sandbox Code Playgroud)
您的所有代码都将执行相同的操作,并且更安全等。