ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • shared_ptr를 사용해보자!!
    Computer Language/C 2008. 12. 8. 04:53
    728x90


    shared_ptr를 접근할때 저는 OSG에서 처음 스마트 포인터라는 개념을 접해서 그쪽에 익숙한 상태였습니다.
    OSG에서 스마트 포인터는 다음과 같이 사용했었습니다.

    osg::ref_ptr<T> ptr = new T;

    저는 이렇게 될 줄알고 shared_ptr를 사용했는데 웬걸?? 바로 에러가 발생하더군요;;
    보통 사용할때는 std::tr1::shared_ptr<T> ptr(new T); 이렇게 사용하더라구요.
    그런데 저는 list컨테이너의 아이템으로 사용해야 하기에 바로 변수를 정의하면서 생성하는 방법은 패스!!
    그래서 shared_ptr class의 정의를 살펴보니 대입연산자는 같은 shared_ptr만 받로록 되어있더군요.
    대신 reset()이라는 멤버함수가 있습니다. 이 녀석의 사용법은 두가지입니다.

    첫번째는 참조를 해제할 경우
     -> ptr.reset();

    두번째는 기존의 참조를 해제하고 새로운 객체를 참조할 경우
     -> ptr.reset(new T);

    또는 대입연산자를 이용해서 이렇게도 가능합니다.

    std::tr1::shared_ptr<T> ptr;
    ptr = std:tr1::shared_ptr<T>(new T);


    아래는 예제code!!
    Visual c++ 2008 sp1에서 테스트했습니다~^^


    'Computer Language > C' 카테고리의 다른 글

    TR1(Tecnical Report1) 소개글  (0) 2008.12.08
    함수 포인터 인수  (0) 2007.08.24
    포인터로 함수 호출하기  (0) 2007.08.24
    함수포인터 타입  (0) 2007.08.24
    [펌] 함수포인터 정의  (0) 2007.08.24

    댓글

Designed by black7375.