我有一个类(称为Node),它有一个weak_ptr
到一个它不拥有的对象(称为Level)。
为此指针实现getter时,我应该返回weak_ptr
还是shared_ptr
?有人可能会争辩说,一个类是否使用weak_ptr
不应该关注该类的用户。如果我想以任何方式使用该对象,我还是必须lock()
,对吧?所以我不妨在吸气器中做到这一点。这有什么问题吗?
class Node {
std::weak_ptr<Level> _level;
public:
const std::shared_ptr<Level> level() const { return _level.lock(); }
}
// somewhere else:
std::shared_ptr<Node> myNode;
// ...
auto level = myNode->level();
if (level) {
// do stuff with level
}