-
shared_ptr를 사용해보자!!Computer Language/C 2008. 12. 8. 04:53728x90
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