2010-09-01 200 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