【发布时间】:2019-11-11 05:13:02
【问题描述】:
我有一个包含vector<shared_ptr<T>>的类:
using SharedItems = std::vector<std::shared_ptr<Item>>;
class LargeLift
{
public:
SharedItems& getItems()
{
return _items;
}
void setSharedItems(SharedItems& items)
{
_items = items;
}
private:
SharedItems _items;
};
然后我执行以下操作:
LargeLift b;
{
LargeLift a;
// Gets populated
SharedItems& items = a.getItems();
b.setSharedItems(items);
}
// Variable a is now out of scope
SharedItems& items2 = b.getItems();
鉴于a 已超出范围,最后一行是否有效?
【问题讨论】:
-
@Yksisarvinen 所以在上面的代码中,最后一行是不安全的,因为 a 已经超出范围。所以我应该让 getter() 按值返回?
-
a没有超出上述示例的范围 -
@Eric 我说它有,以帮助我的问题。
标签: c++ c++11 shared-ptr smart-pointers