2014-03-04 24 views
0

什么是一个很好的C++ 设计模式从一个成员函数中获得拥有shared_ptrshared_ptr模式拥有一个功能内的对象

在我的函数里面,我需要存储一个shared_ptrthis以及稍后检索 - 在另一个范围内。这种天真的方法是行不通的:

void Foo::doSomething(shared_ptr<Bar> bar) 
{ 
    bar->setFoo(make_shared<Foo>(this)); 
} 

void Bar::setFoo(shared_ptr<Foo> foo) 
{ 
    myFoo.reset(foo); 
} 

现在,如果我做

shared_ptr<Foo> foo(new Foo()); 
shared_ptr<Bar> bar(new Bar()); 
foo->doSomething(bar); 

没有办法,我以后可以知道是否bar->myFoo仍然有效。

问题是我正在创建第二个shared_ptr到相同的Foo实例。但是我无法从该函数内访问shared_ptr,因为我只有this

(显然,实际的设置比这个简单的例子更复杂)

回答

相关问题