我正在向智能指針轉變,我試圖確保我正確使用它們。有很多問題涉及何時使用每個問題,但我無法找到有關獲得者的具體問題。這是unique_ptr的濫用嗎?
我有一個類擁有一個指針,我希望其他類能夠訪問該指針(在步驟中重構遺留代碼)。我想給這個類一個unique_ptr,因爲它只會擁有這個對象,但它們不能被複制。我應該返回對unique_ptr的引用,還是隻使用shared_ptr?
class B
{
public:
doAction() {};
};
class A
{
private:
std::unqiue_ptr<B> pointer;
public:
std::unique_ptr<B>& GetPointer()
{
return pointer;
}
};
a.GetPointer()->doAction();
我個人使用原始指針或引用爲非擁有訪問。 (如果允許該值爲空,則使用指針;否則使用引用) – 0x5453
這將允許調用者執行'a.GetPointer()。重置();'可能不完全是你想到的。 ''返回pointer.get();' –