Image

Imageclock_domain wrote in Imageru_cpp

Smart collections

Дорогие сообщники, у меня такой вот глупый вопрос. Хочу написать коллекцию из указателей на объекты, но такую, чтобы:

а) все элементы коллекции уничтожались при уничтожении объекта класса, в котором она хранится;

б) должна быть возможность замены одного элемента коллекции другим без уничтожения старого объекта (по этой причине не подходит, к примеру, std::vector<boost::shared_ptr<ObjType> > -- у shared_ptr нет метода release(); а оборачивать объекты типа ObjType в shared_ptr везде, где они используются, у меня нет возможности);

в) в качестве коллекции выступает не обычный сишный массив (в таком случае все было бы просто -- в бусте есть соответствующие классы), а произвольная STL-евская (или другая) коллекция.

В голову приходит только что-то вроде std::vector<boost::shared_ptr<std::auto_ptr<ObjType> > >. Нет ли решения поизящнее?