C++ 从原始指针转换为智能指针

C++ 从原始指针转换为智能指针,c++,pointers,smart-pointers,C++,Pointers,Smart Pointers,我想使用智能指针而不是原始指针。 如何相应地转换此函数 Node * List::next(const Node * n) const { return n->next; } 像这样: Node * List::next(const Node * n) const { return n->next; } 据我所知,函数next不执行任何所有权转移,因此不需要关注节点对象的所有权方式,因此不需要更改。(它不需要是列表的成员,也可以是静态成员。)如下所示: Node

我想使用智能指针而不是原始指针。 如何相应地转换此函数

Node * List::next(const Node * n) const {
    return n->next;
}
像这样:

Node * List::next(const Node * n) const {
    return n->next;
}
据我所知,函数
next
不执行任何所有权转移,因此不需要关注
节点
对象的所有权方式,因此不需要更改。(它不需要是
列表
的成员,也可以是
静态
成员。)

如下所示:

Node * List::next(const Node * n) const {
    return n->next;
}

据我所知,函数
next
不执行任何所有权转移,因此不需要关注
节点
对象的所有权方式,因此不需要更改。(它不需要是
列表
的成员,也可以是
静态
成员。)

您试图通过使用智能指针来实现什么?您不应该暴露数据结构的低级别。如果裸指针只用于私人用途,则可以使用。智能指针用于管理已分配的资源。您给出的代码片段与现有的原始指针一起工作,而不是分配它们,因此您实际上找不到正确的位置。你明白你想用智能指针做什么吗?我正在学习C++。我只是在玩指针的地方截取了一段代码,现在我只想用智能指针来代替它们。说真的,你走错了方向。与列表节点一样,使用空指针表示列表结束(以及为什么要返回指针)是一个实现细节。真正的接口应该公开对列表元素的引用,而不是指向节点的指针。您需要一种不同的机制来检查列表的结尾。您试图通过使用智能指针来实现什么?您不应该暴露数据结构的低级别。如果裸指针只用于私人用途,则可以使用。智能指针用于管理已分配的资源。您给出的代码片段与现有的原始指针一起工作,而不是分配它们,因此您实际上找不到正确的位置。你明白你想用智能指针做什么吗?我正在学习C++。我只是在玩指针的地方截取了一段代码,现在我只想用智能指针来代替它们。说真的,你走错了方向。与列表节点一样,使用空指针表示列表结束(以及为什么要返回指针)是一个实现细节。真正的接口应该公开对列表元素的引用,而不是指向节点的指针。您需要一种不同的机制来检查列表的结尾。