#include <shptr.hpp>
Граф наследования:shptr_t:
Предназначен для возможности сериализации объектов, про которых известно лишь то, что они производны от oess_1::stdsn::serializable_t. На сериализуемый объект могут одновременно ссылаться несколько объектов-указателей. Сериализуемый объект автоматически уничтожается после уничтожения всех ссылающихся на него объектов-указателей.
В отличии от других подобных классов, shptr_t ориентирован на serializable_t и не предоставляет операторов разыменования указателя. Вместо этого предполагается, что от класса shptr_t будут создаваться производные классы, которые предоставят операторы разыменования.
DDL описание этого типа определено в oess_1/stdsn/ddl/shptr.ddl следующим образом:
{type oess_1::stdsn::shptr_t {attr m_ptr {of {ptr} oess_1::stdsn::serializable_t} } }
Открытые члены | |
shptr_t () | |
Конструктор по умолчанию. | |
shptr_t (serializable_t *ptr) | |
Конструктор при наличии сериализуемого объекта. | |
shptr_t (const shptr_t &o) | |
Конструктор копирования. | |
shptr_t & | operator= (const shptr_t &o) |
Оператор копирования. | |
Защищенные члены | |
Методы, оставленные для совместимости с предыдущими версиями. | |
virtual void | oess_shptr_assign (const shptr_t &o) |
Выполнение операции присваивания. | |
void | oess_reset (serializable_t *ptr=0) |
Назначение указателя контролируемому объекту. | |
Закрытые типы | |
typedef shptr_skeleton_t< oess_1::stdsn::serializable_t > | base_type_t |
shptr_t | ( | ) |
Конструктор по умолчанию.
Указывает, что нет сериализуемого объекта.
shptr_t | ( | serializable_t * | ptr | ) |
Конструктор при наличии сериализуемого объекта.
ptr | Указатель на динамически созданный объект, который будет уничтожен в после уничтожения всех умных указателей на него. |
void oess_reset | ( | serializable_t * | ptr = 0 |
) | [protected] |
Назначение указателя контролируемому объекту.
Метод предназначен для переопределения метода oess_shptr_assign() в производных классах.
Здесь применяется не хороший фокус, использующий знание деталей функционирования класса shptr_skeleton_t. Но данный фокус необходим для сохранения совместимости с версией 1.3.
Заключается он в том, что сначала вручную устанавливается указатель на контролируемый объект, а затем политике владения указывается взять под контроль новый указатель.
ptr | Новый контролируемый указатель. |
void oess_shptr_assign | ( | const shptr_t & | o | ) | [protected, virtual] |
Выполнение операции присваивания.
Оператор копирования.
Для совместимости с предыдущими версиями реализован через использование метода oess_shptr_assign().