[boost]boost::enable_shared_from_this
Posted 2009/09/07 10:45|
|
|
댓글 하나가 운영자에겐 커다란 힘이 됩니다!
class ABC;
boost::shared_ptr<ABC> abc = new boost::shared_ptr<ABC>(new ABC);
이렇게 ABC라는 클래스를 쉐어드 포인터로 쓸경우에 ABC클래스안에서 자기자신 즉 this 포인터를 리턴하고 싶은경우에...
boost::shared_ptr<ABC> ABC::ReturnMe()
{
return boost::shared_ptr(this);
}
라고 해버리면 참조카운트가 올라 가야 정상인거 같은데 참조 카운트가 올라가지를 않는다. 그래서 저 this 포인터를 받은 놈이 삭제되면 참조 카운트가 0이되어서 ABC 객체가 사라지는 현상을 겪게 된다..
그래서 사용하는 것이 boost::enable_shared_from_this 이놈이다
class ABC : public boost::enable_shared_from_this<ABC>
이렇게 상속을 받고
boost::shared_ptr<ABC> ABC::ReturnMe()
{
return shared_from_this();
}
이렇게 쓰면 문제를 해결할수 있다
출처 : 서광덕님 블로그
위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!
- Filed under : 프로그래밍/C & Cpp
- Comment Trackback

