我想根据智能指针创建自己的列表。
我想要一个我可以在列表中添加值的函数,但是我不知道如何在传递给function的对象中更改变量next
的值以指向新创建的对象。有人有想法吗?
#include <iostream>
#include <memory>
struct node
{
int value;
std::unique_ptr<node> next;
node() {
value = 0;
next = nullptr;
}
};
void add(std::unique_ptr<node> &w, int liczba)
{
std::unique_ptr<node> new_list_node{ new node };
}
int main()
{
std::unique_ptr<node> list_node{ new node };
add(list_node, 1);
return 0;
}
答案 0 :(得分:1)
只需分配
void add(std::unique_ptr<node> &w, int liczba)
{
std::unique_ptr<node> new_list_node{ new node };
w->next = std::move(new_list_node);
}
或者更好的是,对于c ++ 14
void add(std::unique_ptr<node> &w, int liczba)
{
w->next = std::make_unique<node>();
}
您只需要确保为next
分配一个右值,或者使用std::move