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。 为什么我收到此错误? 有人可以帮忙吗?
谢谢!
答案 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);