2010-09-01 248 views
1

常見的指針允許您創建指向指針:共享指針:指針的指針

void foo(Object **o) {} 

int main() 
{ 
    Object * o = new Object(); 
    foo(&o); 
} 

是否有shared_ptr的類似的建築?

void foo(std::shared_ptr <Object> *o) {} 

int main() 
{ 
    std::shared_ptr <Object> o(new Object()); 
    foo(&o); 
} 
+0

你想達到什麼目的?除非你有特殊的理由,否則最簡單的方法是直接返回一個對象,或者至少返回一個所有權通過值傳遞智能指針。將指針指向指向智能指針的指針或指針,以便將其指向動態全部指針ocate對象在C++中通常不是必需的。 – 2010-09-01 19:57:16

回答

2

沒有測試這個,我敢肯定你會想:

shared_ptr<shared_ptr<T> > o(new shared_ptr<T>(new T())); 

編輯:忘了「新的」第一「(」和固定不規範使用後> >(在C++ 0x之前至少不是標準的)

+0

當然,foo()的簽名是: void foo(std :: shared_ptr > o); – 2010-09-01 19:53:22

+0

當然他正在尋找一些簡單的參數:'shared_ptr * p'和執行'p-> reset(new T)'。雖然這對我來說看起來很笨拙。 – 2010-09-01 20:01:51