기존 코드를 "현대화"하려고합니다.unique_ptr을 함수에 전달
- 현재 회원 변수가 "Device * device_"인 수업이 있습니다.
- 새로운 초기화 코드에서 인스턴스를 생성하기 위해 new를 사용하고, destructory에 "delete device_"가 있습니다.
- 이 클래스의 멤버 함수는 많은 Device *를 매개 변수로 사용하는 다른 함수를 호출합니다. 이 있지만, 잘 작동
내 코드는 내가 "std::unique_ptr<Device> device_"
로 정의 할 수있는 변수를 변경하고 코드를 안전하고 일반적으로 더 나은하게 삭제하는 명시 적으로 호출을 제거한다고 생각했다 "현대화".
- 가 어떻게 다음 paramater로 필요로하는 모든 기능에 장치 _ 변수를 전달해야한다 -
내 질문은 이것이다?
각 함수 호출에서 .get을 호출하여 .get을 호출 할 수 있습니다. 그러나 그것은 추악한 것처럼 보이고 처음에는 unique_ptr을 사용하는 몇 가지 이유를 낭비합니다.
또는 대신 유형의 매개 변수 "장치 *"를 복용 지금 "& unique_ptr 표준 :"유형의 paramater 발생하도록 나는 마다 기능을 변경할 수 있습니다. 어느 것이 (나에게) 함수 프로토 타입을 다소 난독 화하고 읽기 어렵게 만듭니다.
가장 좋은 방법은 무엇입니까? 다른 옵션을 놓친 적이 있습니까?
왜이 변경 코드가 안전하고 일반적으로 더 나은 만들 것 패스? 당신의 설명에서, 나는 그 반대가 사실이라고 말할 것입니다. –
@James Kanze 나는이 경우 unique_ptr이 아무 것도 사지 않는 것 같아. – juanchopanza
당신이 옳을 수도 있습니다. unique_ptr의 "안전성"이 마음에 들지만 삭제할 필요가 없다는 점에서이 경우에는 비용이들 것 같습니다. – jcoder