특정 삭제 메커니즘이 필요한 타사 클래스로 작업할 때 다음을 수행해야 하는 시나리오가 발생할 수 있습니다. std::unique_ptr 멤버 변수와 함께 사용자 정의 삭제기를 사용하십시오. 이 기사에서는 이를 달성하기 위한 솔루션을 제공합니다.
std::unique_ptr 유형의 멤버 변수가 있는 Foo 클래스가 있다고 상상해 보십시오. 이 시나리오에서 타사 클래스 Bar에는 객체 생성 및 소멸을 위한 전용 create() 및 destroy() 함수가 있습니다.
독립 실행형 함수에서 다음을 사용할 수 있습니다. 다음과 같이 std::unique_ptr을 사용하는 사용자 정의 삭제기:
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... }
멤버 변수로 작업할 때 동일한 기능을 달성하기 위한 해결 방법은 다음과 같습니다.
class Foo { std::unique_ptr<Bar, void(*)(Bar*)> ptr_; // ... public: Foo() : ptr_(create(), destroy) { /* ... */ } // ... };
이 코드에서는:
이 접근 방식을 사용하면 std::unique_ptr 멤버 변수에 대한 사용자 정의 삭제자를 편리하게 활용하여 타사 클래스에 대해서도 적절한 리소스 관리를 보장합니다.
위 내용은 `std::unique_ptr` 멤버 변수와 함께 사용자 정의 삭제자를 사용하는 방법은 무엇입니까? ````의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!