我有一个具有 unique_ptr 成员的类,并且该类保留该对象的唯一所有权。但是,外部类可能需要访问该对象。在这种情况下,我应该只返回一个原始指针吗?shared_ptr 似乎不正确,因为这意味着访问类现在共享该内存的所有权,而我想明确指出原始类是唯一的所有者。
例如,也许我有一个拥有根节点的树类。另一个类可能出于某种原因希望探索树,并且需要一个指向根节点的指针来执行此操作。部分实现可能如下所示:
class Tree
{
public:
Node* GetRoot()
{
return m_root.Get();
}
private:
std::unique_ptr<Node> m_root;
};
这是不好的做法吗?更好的解决方案是什么?