我实际上使用的是 std::unique_ptr
为了创建二叉树。
事实上,我使用了一种算法 tour,它从距离矩阵计算出最短路径!
在我的算法中,我发现自己面临着 std::move()
的问题。与 std::unique_ptr
.
我的树已经建好,但只建在根节点上,不“做分支”。
这里是我遇到问题的代码:
node = std::move(node.get()->addChild());
函数addChild
返回 new child (= std::unique_ptr<Node>)
的引用.
我真的需要“改变”节点来完成我的算法。那么,我该如何解决呢?
最佳答案
更改 addChild
以按值返回新节点的 unique_ptr
而不是返回引用。结果将是一个右值,无需使用 std::move
进行强制转换。在您当前的代码中,您将左值引用传递给 std::move
这导致它仍然是左值引用并尝试调用复制构造函数而不是 std::unique_ptr 的移动构造函数
。
关于c++ - 带有 std::unique_ptr 的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219003/