를 초기화하는 인터페이스 추가 기능 : 클래스 내부인터페이스 기능이있어 내가 클래스가 그것을 통해 노출이 shared_ptr의
void AddObject(Object *o);
나는 set<shared_ptr<Object>>
의 개체를 유지합니다. 받은 포인터로부터 shared_ptr
을 생성 할 것이므로 함수 인수를 rvalue 포인터로 제한하여 사용자가 사용하는 포인터를 삭제하지 않을 것이라고 생각했습니다.
void AddObject(Object* &&o);
그래서 일반적인 사용이 될 것입니다 : 그래서 난에 함수 선언을 변경할 수 있습니다
AddObject(new Object())
실수로 내가 잡아 포인터를 삭제하는 사용자를 방지 할 수있다. 사용자가 shared_ptr
에 익숙하지 않기 때문에 인터페이스에 shared_ptr
을 사용하고 싶지 않습니다. 제 제안은 좋은 생각이라고 생각하십니까?
'std :: unique_ptr '의 문제점은 무엇입니까? – AndyG
그 대신에 unique_ptr을 쓰면 똑같은 질문이 적용됩니다. –
'unique_ptr'을 사용하면 인터페이스에서 좀 더 분명하게 나타납니다. 또한,'move' 의미 체계는 이미 전달되고 있으므로,'unique_ptr'을'std :: move '하는 것은 자연스럽지 만 원시 포인터를'std :: move'하는 것은 정말 이상합니다. – AndyG