我正在使用Node类构建一个树,该类在左右子节点上具有unique_ptr,在父节点上具有Node *指针。当我删除节点时,我接受节点,我必须检查我正在删除的节点是否是左子节点,然后重置父节点中的unique_ptr。有没有办法获取指针并询问它周围是否有任何unique_ptr包装并可能返回它?
答案 0 :(得分:5)
有没有办法获取指针并询问它周围是否有任何unique_ptr包装并可能返回它?
找不到unique_ptr
的通用方式,但您可以存储参考。
假设您的树是二进制的,您可以在父母中找到unique_ptr
,如下所示:
(parent->left == this ? parent->left : parent->right).release();
如果树不是二进制,则可以迭代所有子项。
答案 1 :(得分:0)
在C ++中,指针是单向的;而unique_ptr
只是一个指针周围的包装类,并没有改变它。无法从它指向的原始指针获取unique_ptr
。
可以针对您的特定问题提供一些替代解决方案: