로부터 상속 된 클래스에서 unique_ptr 반환 나는 왜 빌더 방법 Class::create()
가 unique_ptr
unique_from_this()가 있습니까? 또는 방법 enable_shared_from_this
을 반환하려면?
1)이 설계는 공유 소유권 (및 원 자성 잠금)을 시행하지 않습니다. unique_ptr
은 매우 효율적이고 아직도, 클래스 사용자의 측면에 shared_ptr
으로 이동하기 쉽다) void*
2와 동일한 크기를 가지고 (그러나 클라이언트는 여러 소유의 인스턴스)
을 공유하고자하는 경우에만그럼. 내가 사용하는 것에 대해서만 지불하고 싶습니다.
하지만. "this"포인터를 반환하는 클래스 인스턴스의 메서드가 필요합니다. 내가 enable_shared_from_this
에서 클래스를 상속하는 경우 난 그냥 return shared_from_this
를 사용하지만 나는 그것이 유일한 소유권 것이다 (물론) (shared_from_this를 사용하지 않고) 클래스 어딘가에서 만든 unique_ptr 어떻게 든 즉
, 관련이 없을 것이라고 생각 이 unique_ptr에서 생성 된 (잠재) shared_ptr와 관련이 있습니까? 아니면 이중 삭제 문제로 이어질 것인가?
TBH 'this'를 'unique_ptr'에 쉽게 넣을 수 있고 'shared_ptr'과 같은 문제는 해결할 수 없기 때문에 이것이 합리적이지는 않습니다. – Galik
이제 보자. 나는 own_ptr을 Owner 클래스에 반환했다. 그런 다음 shared_ptr로 이동하고 OtherOwner와 같은 다른 클래스에 핸들을 제공하여 강력한 공유 참조를 유지합니다. 하지만 어떻게이 공유 된 그룹을 클래스 인스턴스 자체에서 찾을 수 있습니까? – barney
이것은 의미 론적 의미가 없습니다. 이 멤버 함수를 호출 할 객체가 있으면 이미 * something *이 소유하고 있습니다. 일반적인 경우에 어떻게 고유 한 소유자를 얻을 수 있습니까? – StoryTeller