我实际上正在使用std::unique_ptr
来创建二叉树。
事实上,我使用算法巡视,从距离矩阵计算最短路径!
在我的算法中,我发现自己面临std::move()
与std::unique_ptr
的问题。
我的树是构建的,但只在根节点上构建,而不是“make branch”。
这里是我遇到问题的代码:
node = std::move(node.get()->addChild());
函数addChild
返回new child (= std::unique_ptr<Node>)
的引用。
我真的需要“更改”节点才能完成我的算法。那么,我该如何解决呢?
答案 0 :(得分:0)
更改addChild
以按值返回新节点的unique_ptr
,而不是返回引用。结果将是一个右值而不需要使用std::move
进行强制转换。在当前代码中,您将左值引用传递给std::move
,这导致它仍然是左值引用并尝试调用复制构造函数而不是移动std::unique_ptr
的构造函数。