문제

MFC에서 코드를 작성하고 자동 포인터를 사용하고 싶습니다. 나는 그들이 같은 일을하는 것처럼 보이는 두 가지 다른 수업을 발견했습니다. CAutoPtr 그리고 std::auto_ptr 두 가지 다른 구현에 대한 사람들의 생각은 무엇입니까?

또한, 나는 있다는 것을 알고 있습니다 std::tr1::shared_ptr. 비슷한 것이 있습니까? shared_ptr ATL/MFC에 있습니까?

도움이 되었습니까?

해결책

둘 다 CAutoPtr 그리고 auto_ptr 소유권 시맨틱의 양도를 포함한 스마트 포인터 시맨틱을 제공하십시오. CAutoPtr COM을 사용하여 구축 된 ATL 클래스입니다. 특정 OS의 비표준 확장자입니다. auto_ptr 반면에 표준 C ++가 있습니다. 그러한 물체의 컨테이너를 사용하려면 사용해야합니다. CAutoPtrArray 또는 CAutoPtrList.

주목할 중요한 점은 auto_ptr_ref 그것은 당신이 돌아올 수있게합니다 auto_ptr반환 값으로서. 그런 것이 없습니다 CAutoPtr.

auto_ptr C ++ 0x에서는 더 이상 사용되지 않습니다. 사용 unique_ptr 필요한 경우 : 이동 인식 컨테이너에서 사용할 수 있으며 L- 값의 안전하지 않은 암시 적 움직임으로부터 안전을 얻을 수 있습니다.

다른 팁

ATL/MFC에서 shared_ptr에 가장 가까운 것은 ccomptr입니다. COM 객체에서 사용되어야하지만 AddRef/Release Reference Counting Methods가 포함 된 모든 클래스에서 사용할 수 있습니다.

cautoptr는 ATL이 특이 적입니다.

STD : AUTO_PTR 및 CAUTOPTR 둘 다 참조 계산을 제공하지 않습니다. 둘 다 동일한 기능을 갖는 것처럼 보입니다.링크 텍스트

ATL/MFC에는 shared_ptr이 없다고 생각합니다. Shared_ptr은 Boost Library에서 구현됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top