В моем новом проекте я хочу (в основном, чтобы увидеть, как это будет работать) полностью запретить необработанные указатели в моем коде.
Мой первый подход заключался в том, чтобы позволить всем классам унаследовать от этого простого класса: шаблон class Base {public: typedef std :: shared_ptr ptr; };
И просто используйте class :: ptr везде, где мне нужен указатель.
Этот подход казался подходящим, пока я не понял, что иногда мои объекты хотят передавать указатель this на другие объекты. Разрешить моим объектам просто обернуть его в shared_ptr не получится, поскольку тогда у одного и того же указателя может быть два владельца. Я полагаю, это плохо.
Моя следующая идея состояла в том, чтобы изменить класс «Базовый», чтобы реализовать сам подсчет ссылок, таким образом, каждый экземпляр классов, наследуемых от «Базового», может иметь только один счетчик.
Это хорошее решение, есть ли что-нибудь лучше и может ли Boost и / или stl уже решить эту проблему для меня?
delete
илиdelete[]
, но вопрос не об этом. Безусловно, выбор, когда и где получить долевую собственность, является необходимой частью процесса проектирования; запрет на любое использование необработанных указателей не является ни заменой этого, ни практичным во многих проектах. - person CB Bailey   schedule 01.07.2010Base
в объекте и, следовательно, несколько разных счетчиков. - person Matthieu M.   schedule 01.07.2010