내가 유형 std::unique_ptr
의 필드가 클래스 A
이 unique_ptr :이동 소유권은 성병 ::
class A
{
public:
std::unique_ptr pointer;
// class body
};
을 그리고 어딘가에 코드를, 내가 할 점 몇 std::shared_ptr
의를 사용하고 있습니다 같은 대상. 이제 달성하고자하는 것은 내 클래스의 소유권을 std::unique_ptr
으로 이동하는 것입니다. 따라서 shared_ptr
이 모두 삭제 될 경우이 unique_ptr
이 살아있을 때까지는 내 개체가 살아있을 것입니다.
제 질문은 소유권을 std::shared_ptr
에서 std::unique_ptr
으로 옮길 수 있습니까? 그렇다면 어떻게해야합니까?
논리적으로 그러한 시나리오는 나에게 이해가 가지 않습니다. onwership을 전송할 수 있다고 잠시 동안 생각해보십시오. 그러나 ** 오직 ** ** shared_ptr' alives 만 있다고 확신 할 때만 할 수 있습니다. 그렇다면'shared_ptr'을'A'의 멤버로, ** 척을 ** unique_ptr로 사용할 수 있습니다. – Nawaz
"소유권을 내 클래스의이 std :: unique_ptr로 옮깁니다. 그러면 모든 shared_ptrs가 삭제 될 경우이 unique_ptr이 계속 유지되는 한 내 객체가 살아있을 것입니다 ..."A에서 하나만 공유하면 어떨까요? – qPCR4vir
같은 객체를 가리키는 N 개의 다른 공유 ptrs가 있다면? 그걸 어떻게 처리 할 수 있니? 'shared_ptr'는 이유 때문에'release' 메소드를 제공하지 않습니다. –