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

error: no matching member function for call to 'reset' (shared pointers)

本文关键字:函数 成员 共享 调用 reset 指针 错误      更新时间:2023-10-16
template<typename T>
struct Node{
      ListNode(SkipListKind kind, const T& key);
      std::shared_ptr<ListNode<T>> next;
}

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

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

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

在类型方面:std::要查看> .reset (std:: make_shared>)

我使用。reset,因为指针最初指向NULL。为什么会出现这个错误?有人能帮帮我吗?

谢谢!

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);