最佳实践?从指针转换为 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;
};
我正在尝试将裸指针转换为智能指针。 但我不太确定如何在使用唯一指针时保持 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;
};