태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[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();
}

이렇게 쓰면 문제를 해결할수 있다

출처 : 서광덕님 블로그

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

« PREV : 1 : ... 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : ... 431 : NEXT »