首页 > 解决方案 > 转动 shared_ptr参考

问题描述

存储时返回T&参考的好习惯是什么shared_ptr<T>
示例场景:我存储 std::shared_ptr<Point> lastLocation; 并有一个签名:
Point& getlastPosition();
我想制作类似的东西:

Point& MyClass::getLastLocation(){
    return *lastLocation.get()
}

标签: c++smart-pointers

解决方案


您的代码应该按原样工作。虽然调用get()是多余的:共享指针本身可以使用取消引用运算符按原样取消引用,从而产生您想要的引用。所以简单地写就足够了

Point& MyClass::getLastLocation(){
    return *lastLocation;
}

请记住Point,除非它的名称不能描述它是什么,否则可能不需要首先将其存储在动态内存中。检查您的代码设计并首先考虑是否需要任何类型的指针。


推荐阅读