Я пытаюсь "модернизировать" существующий код.
- У меня есть класс, который в настоящее время имеет переменную-член "Device * device_".
- Он использует новое для создания экземпляра в некотором коде инициализации и имеет "delete device_" в деструктории.
- Функции-члены этого класса вызывают множество других функций, которые принимают Device * в качестве параметра.
Это хорошо работает, но чтобы "модернизировать" мой код, я думал, что должен изменить переменную, которая будет определена как "std::unique_ptr<Device> device_"
, и удалить явный вызов для удаления, что делает код более безопасным и вообще лучше.
Мой вопрос -
- Как мне передать переменную device_ всем функциям, которые нуждаются в ней в качестве параметра?
Я могу вызвать .get, чтобы получить необработанный указатель в каждом вызове функции. Но это кажется уродливым и извращает некоторые причины использования unique_ptr в первую очередь.
Или я могу изменить каждую функцию, чтобы вместо того, чтобы принимать параметр типа "Устройство *", теперь он принимает параметр типа "std:: unique_ptr &". Который (мне) несколько запутывает прототипы функций и затрудняет их чтение.
Что лучше для этого? Я пропустил другие варианты?