Мне нужно единоличное владение объектом, потому что мне нужно иметь возможность уничтожить его по требованию (иногда это имеет смысл; в этом случае объект представляет собой сеанс входа в систему, который из соображений безопасности пользователь хочет закрыть). Назовем этот объект session
. Другие клиентские объекты сохраняют ссылки на session
, но, конечно, он может быть мертв, когда клиенты обращаются к ссылке.
Мне нужна «безопасная ссылка», которая уведомляется, когда исходный объект уничтожается, и аккуратно сообщает об этом (исключение, логическое значение) клиенту вместо segfault.
Есть ли что-нибудь подобное? Предпочтительно использовать то, что доступно в стандартном C ++ / Boost. Желательно C ++ 03. shared_ptr
с weak_ptr
- это почти то, что мне нужно, если бы только shared_ptr
s не продлили срок службы session
. Мне нужно гарантировать, что session
был уничтожен, и случайный shared_ptr
предотвратит это.
std::unique_ptr
. К сожалению, это невозможно реализовать в C ++ 03, поэтому нет эквивалента Boost. - person Some programmer dude   schedule 04.12.2013unique_ptr
в C ++ 03. - person thehouse   schedule 04.12.2013session
. - person thehouse   schedule 04.12.2013weak_ptr
, который зависит отshared_ptr
с его неконтролируемым временем жизни. - person thehouse   schedule 04.12.2013