Мне нужен умный указатель без подсчета ссылок, который может объединить некоторые полезные аспекты auto_ptr
и shared_ptr
. Я думаю, что C ++ 0x unique_ptr
- это в конечном итоге то, что мне нужно, но мне нужно что-то, что будет компилироваться в Visual Studio 2008 и Xcode (gcc 4.2).
Мне нужны следующие функции:
release ()
(например, auto_ptr) Итак, я полагаю, что это действительно лучший auto_ptr
. Есть ли что-нибудь, что делает это в ускоренном режиме или где-то еще (примечание: у меня нет времени обдумывать Локи)? Или я должен просто использовать свой собственный?
РЕДАКТИРОВАТЬ: Я только что прочитал больше о auto_ptr
- похоже, вы можете использовать его с предварительными объявлениями, если вы убедитесь, что заголовок класса включен в каждый файл .cpp, который ссылается на заголовок с помощью интеллектуального указателя (например, см. GotW ). У кого-нибудь есть какие-то общие советы или практические правила по этому поводу?
РЕДАКТИРОВАТЬ2: Причина, по которой shared_ptr isn ' Это приемлемо, потому что мне нужен метод release (), поскольку я убираю некоторый устаревший код, вводя фабричные методы, но он должен сосуществовать с некоторым ручным кодом владения указателем. Использование shared_ptr во всей кодовой базе было бы отличным, но огромной задачей.
EDIT3: В конце концов, auto_ptr
подходил для этой работы, когда я обнаружил причуды прямого включения. Было бы интересно также попробовать написать собственный удалитель для shared_ptr
, чтобы разрешить необязательное удаление указателя.