나는 세 가지 클래스를 가지고 : A는, B, 클래스 A에서 C내가 가리키는 대상의 메모리를 관리하지 않는 경우 unique_ptr을 사용해야합니까?
는 C 벡터의 ptrs 단순히 2D 벡터의 요소에서 가리키는 vector<unique_ptr<B>>
가 클래스 C의 vector<vector<B>>
있다
필자는이 요소들에 대한 참조만을 원하며이 포인터들로 새로운 메모리를 생성하고 싶지는 않습니다 (그것이 unique_ptrs가하는 일인지 확실하지 않습니다).
이 경우 원시 포인터를 사용하는 것이 더 좋을까요?
편집 : 나는합니다 (ptrs이 범위를 벗어나 갈 때) 벡터가 삭제 될 때 삭제 될 가리키는있어 객체
"벡터가 삭제 될 때 (ptrs가 범위를 벗어날 때) 가리키고있는 객체를 지우고 싶지 않습니다. *"그런 다음 객체를 벡터에 두지 마십시오. 벡터는 벡터가 삭제 될 때 삭제됩니다. 'vector'는 그 내용을 소유하고'unique_ptr'이 소유 포인터 인 컨테이너이기 때문에,'vector'에서 객체에 대한 unique_ptr을 절대 가져서는 안됩니다. –
@DavidSchwartz하지만 클래스 A에서 벡터에 액세스 할 수 있어야합니다. 더 나은 방법이 있나요? – dramadwarfie
@davidbak : 데이빗 슈 와츠는'vector'가'unique_ptr'을 저장할 수 없다는 의미가 아니라'vector'의 내용에'unique_ptr' * 점을 가지지 말라고 말했습니다. 'vector'는 그 내용을 소유하고 있으며, unique_ptr은 요소의 소유권을 주장하기 위해 heap corruption이 일어나기를 기다리고 있습니다. – ShadowRanger