Передача unique_ptr функциям

Я пытаюсь «модернизировать» некоторый существующий код.

  • У меня есть класс, который в настоящее время имеет переменную-член «Device*». device_".
  • Он использует new для создания экземпляра в некотором коде инициализации и имеет "delete device_" в деструкторе.
  • Функции-члены этого класса вызывают многиедругие функции, которые принимают Device * в качестве параметра.

Это работает хорошо, но для «модернизации» моего кода я подумал, что должен изменить переменную, чтобы она определялась как «std::unique_ptr device_»и удалить явный вызов удаления, что делает код безопаснее и в целом лучше.

Мой вопрос заключается в следующем:

  • Как мне передать переменную device_ всем функциям, которым она нужна как paramater?

Я могу вызвать .get для получения необработанного указателя при каждом вызове функции. Но это кажется уродливым и теряет некоторые причины использовать unique_ptr в первую очередь.

Или Я могу изменить каждую функцию так, чтобы вместо параметра типа "Device*" она теперь принимала параметр типа "std::unique_ptr&". Что (для меня) несколько запутывает прототипы функций и затрудняет их чтение.

Как лучше всего это сделать? Я пропустил какие-либо другие варианты?

46
задан Meysam 11 May 2015 в 05:56
поделиться