2014-03-04 1 views
0

구성원 함수 내에서 shared_ptr을 소유하게하려면 좋은 C++ 디자인 패턴이 무엇입니까?shared_ptr 함수 내에서 객체를 소유하기위한 패턴

내 기능에는 shared_ptr ~ this을 저장하고 나중에 검색해야합니다. 다른 범위에서. 내가

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

을 할 경우 지금

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

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

bar->myFoo이 여전히 유효한 경우 나중에 알 수있는 방법이 없습니다 :이 순진한 접근 방식은 작동하지 않습니다.

문제는 동일한 Foo 인스턴스에 두 번째 shared_ptr을 생성한다는 것입니다. 그러나 this 만 있기 때문에 함수 내에서 shared_ptr에 액세스 할 수있는 방법은 없습니다.

는 (물론 실제 설정이 간단한 예보다 더 복잡하다)

답변

관련 문제