如何实现weak_ptr getter?

时间:2017-11-20 14:21:15

标签: c++ shared-ptr smart-pointers getter-setter weak-ptr

我有一个类(称为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
}

0 个答案:

没有答案