二进制树与std :: unique_ptr

时间:2014-04-22 12:05:00

标签: c++ c++11

我实际上正在使用std::unique_ptr来创建二叉树。

事实上,我使用算法巡视,从距离矩阵计算最短路径! 在我的算法中,我发现自己面临std::move()std::unique_ptr的问题。

我的树是构建的,但只在根节点上构建,而不是“make branch”。

这里是我遇到问题的代码:

node = std::move(node.get()->addChild());

函数addChild返回new child (= std::unique_ptr<Node>)的引用。

我真的需要“更改”节点才能完成我的算法。那么,我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

更改addChild以按值返回新节点的unique_ptr,而不是返回引用。结果将是一个右值而不需要使用std::move进行强制转换。在当前代码中,您将左值引用传递给std::move,这导致它仍然是左值引用并尝试调用复制构造函数而不是移动std::unique_ptr的构造函数。