Ответ 1
У вас есть два варианта получения ссылки на объект, на который указывает shared_ptr
. Предположим, что у вас есть переменная shared_ptr
с именем ptr
. Вы можете получить ссылку либо с помощью *ptr
, либо *ptr.get()
. Эти два должны быть эквивалентными, но первым было бы предпочтительным.
Причиной этого является то, что вы действительно пытаетесь имитировать операцию разыменования необработанного указателя. Выражение *ptr
читает "Получите данные, на которые указывает ptr
", тогда как выражение *ptr.get()
"Получите данные, на которые указывает необработанный указатель, который обернут внутри ptr
". Ясно, что первое описывает ваше намерение гораздо более четко.
Другая причина заключается в том, что shared_ptr::get()
предназначен для использования в сценарии, где вам действительно нужен доступ к необработанному указателю. В вашем случае вам это не нужно, поэтому не просите об этом. Просто пропустите всю вещь необработанного указателя и продолжайте жить в более безопасном мире shared_ptr
.