안전하게 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
댓글 달기