错误:没有匹配的成员函数来调用'reset'(共享指针)

时间:2015-05-21 23:06:07

标签: c++ pointers makefile initialization shared-ptr

template<typename T>
struct Node{
      ListNode(SkipListKind kind, const T& key);
      std::shared_ptr<ListNode<T>> next;
}

已经初始化了一个指向Node的共享指针(称之为节点),并且它的下一个成员变量已被设置为NULL。

node->next.reset(std::make_shared<ListNode<T>>(SkipListKind::PosInf, T{}));

错误: 错误:没有匹配成员函数来调用'reset'(共享指针)

在类型方面: 的std :: shared_ptr的&GT; .reset段(标准:: make_shared&GT)

我正在使用.reset,因为指针最初指向NULL。 为什么我收到此错误? 有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

std::shared_ptr::reset()函数需要一个原始指针作为参数。

您可以使用赋值运算符来解决您的问题:

node->next = std::make_shared<ListNode<T>>(SkipListKind::PosInf, T{}));

如果您更喜欢交换,请执行以下操作:

std::make_shared<ListNode<T>>(SkipListKind::PosInf, T{}).swap(node->next);