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