最佳实践?从指针转换为 Unique_Ptrs

Best Practices? Converting from pointers to Unique_Ptrs

我正在尝试将裸指针转换为智能指针。 但我不太确定如何在使用唯一指针时保持 currentBar(谁也将位于 myBars 中)

Class Foo
{
  public:
     Bar* getCurrentBar();
     //!! other stuff not important
  private:
     Bar* currentBar;
     std::vector<Bar *> myBars;
  
};

我认为我不应该使用共享指针,因为唯一拥有对象所有权的是 Foo,

Class Foo
{
   public:
      std::unique_ptr<Bar> getCurrentBar(); //? returns currentBar, whatever currentBar is;
   private:
      std::unique_ptr<Bar> currentBar; //? What do I do here?
      std::vector<std::unique_ptr<Bar>> myBars;
 };

上面的方法行不通,但我想做类似上面的事情。我该怎么做呢? (我宁愿不使用共享指针)。

非拥有原始指针没有错。使用向量中的 unique_ptr 来管理生命周期,然后为您的界面使用常规指针或引用。那看起来像

Class Foo
{
  public:
     Bar* getCurrentBar(); 
     // or Bar& getCurrentBar();
  private:
     Bar* currentBar;
     std::vector<std::unique_ptr<Bar>> myBars;
  
};