나는이 배열을 가지고있다. 불행하게도, 컴파일러는 LexedFile
소멸자에 대한 맵 변수의 가시성 규칙으로 인해 이것에 대해 크게 불평합니다. ~LexedFile()
을 공개하여이 문제를 해결할 수 있습니다. 물론 내가 개인적으로 만든 이유는 해당 유형의 개체가 Lex
개체에만 속해 있다는 결정을 강화하는 것입니다.C++ unique_ptr 대 친구 클래스 개인 소멸자
내 질문은 무엇입니까? unique_ptr
을 행복하게 만들고 여전히 ~LexedFile()
을 개인용으로 유지하기위한 내 휴대용 옵션은 무엇입니까? 휴대용, 적어도 최신 g ++ 및 최신 Visual C++ 함께 작동합니다 같아요.
friend class std::unique_ptr<LexedFile>;
를하지만이 (가하지 않았다) 근무했다하더라도 그것은 좀 휴대용되지 않을 수도 있습니다 구현에 대한 가정에 의존처럼 보였다.
을 자신의 Deleter가 통과하는 대신 기본 일 : –
는'친구가 클래스 표준 : : default_delete가'도 가능하게 구현에 따라 일할 수를 사용하여,하지만 난에 포함되지 것입니다 그것과 아마도 당신이 그것을 노출하고자하는 것보다 더 많은 소멸자를 노출 아마 –
또는 더 나은'친구 std :: unique_ptr :: deleter_type;'또한 사용자 정의를 사용하는'std :: unique_ptr ' deleter. –