안전하게 this의 shared_ptr 얻는 방법?
      글쓴이: wafe / 작성시간: 화, 2006/03/14 - 8:44오후    
  
  
class MyClass
{
public:
  void AddToList(MyClassList &list)
  {
    // 바로 이부분!
    list.push_back(this);
  }
};
typedef boost::shared_ptr<MyClass> MyClassPtr;
typedef std::list<MyClassPtr> MyClassList;
...
MyClassList newList;
MyClassPtr newInst(new MyClass());
newInst->AddToList(newList);
이런 코드가 있을 때 표시해 놓은 부분의 코드를 어떻게 써야할 지 모르겠습니다.
list.push_back(MyClassPtr(this));
라고 쓰면 문법적으로는 맞지만 인스턴스 하나를 가지고 shared_ptr 두 개를 만들게 되어 문제가 생기죠.
좋은 방법이 없을까요?
Forums: 


boost::enable_shared_from_this 를 쓰면 되는군요.
자문자답이군요. ^^; MyClass가 boost::enable_shared_from_this를 상속받게 하면 되는 것 같습니다.
예제는
http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html
에 있습니다.
Heejoon Lee
댓글 달기