C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

Строитель объекта геометрической модели. Подробнее...

Базовые классы:MbRefItem и TapeBase.

Производные классы:MbAttributeProvider, MbBeadSolid, MbBendAnySolid, MbBendOverSegSolid, MbBendsByEdgesSolid, MbBendUnbendSolid, MbBooleanSolid, MbClosedCornerSolid, MbConnectingCurveCreator, MbCurveSweptSolid, MbCuttingSolid, MbDetachSolid, MbDraftSolid, MbDuplicationSolid, MbElementarySolid, MbExtensionShell, MbFaceModifiedSolid, MbIntCurveCreator, MbJalousieSolid, MbJogSolid, MbJoinShell, MbJointBendSolid, MbMedianShell, MbMeshShell, MbModifiedNurbsItem, MbNurbs3DCreator, MbNurbsBlockSolid, MbNurbsModification, MbNurbsSurfacesSolid, MbOffsetCurveCreator, MbPatchCreator, MbProjCurveCreator, MbRestoredEdgesSolid, MbReverseCreator, MbRibSolid, MbRuledShell, MbRuledSolid, MbSheetMetalSolid, MbSheetUnionSolid, MbShellSolid, MbSimpleCreator, MbSimplifyFlatSolid, MbSmoothSolid, MbSphericalStampSolid, MbSplitShell, MbStampRibSolid, MbStampSolid, MbStitchedSolid, MbSurfaceSplineCreator, MbSymmetrySolid, MbThinShellCreator, MbTransformedSolid, MbTruncatedShell и MbUnionSolid.

Граф связей класса MbCreator:
[см. легенду]

Открытые члены

virtual ~MbCreator ()
 Деструктор.
 
Общие функции строителя оболочки.
virtual MbeRefType RefType () const
 Получить регистрационный тип (для копирования, дублирования).
 
virtual MbeCreatorType IsA () const =0
 Получить тип объекта.
 
virtual MbeCreatorType Type () const
 Получить групповой тип объекта.
 
virtual MbCreatorDuplicate (MbRegDuplicate *iReg=NULL) const =0
 Создать копию объекта. Подробнее...
 
virtual void Transform (const MbMatrix3D &matr, MbRegTransform *iReg=NULL)=0
 Преобразовать согласно матрице. Подробнее...
 
virtual void Move (const MbVector3D &to, MbRegTransform *iReg=NULL)=0
 Сдвинуть вдоль вектора. Подробнее...
 
virtual void Rotate (const MbAxis3D &axis, double angle, MbRegTransform *iReg=NULL)=0
 Повернуть объект вокруг оси. Подробнее...
 
virtual bool IsSame (const MbCreator &other, double accuracy) const =0
 Являются ли объекты равными? Подробнее...
 
virtual bool IsSimilar (const MbCreator &item) const
 Являются ли объекты подобными? Подробнее...
 
virtual bool SetEqual (const MbCreator &)=0
 Сделать объекты равными, если они подобны.
 
virtual bool CreateShell (MbFaceShell *&shell, MbeCopyMode sameShell, RPArray< MbSpaceItem > *items=NULL)
 Построить оболочку по исходным данным. Подробнее...
 
bool CreateShell (SPtr< MbFaceShell > &shell, MbeCopyMode sameShell)
 Построить оболочку по исходным данным. Подробнее...
 
virtual bool CreateWireFrame (MbWireFrame *&frame, MbeCopyMode sameShell, RPArray< MbSpaceItem > *items=NULL)
 Построить проволочный каркас по исходным данным. Подробнее...
 
bool CreateWireFrame (SPtr< MbWireFrame > &frame, MbeCopyMode sameShell)
 Построить проволочный каркас по исходным данным. Подробнее...
 
virtual bool CreatePointFrame (MbPointFrame *&frame, MbeCopyMode sameShell, RPArray< MbSpaceItem > *items=NULL)
 Построить точечный каркас по исходным данным. Подробнее...
 
bool CreatePointFrame (SPtr< MbPointFrame > &frame, MbeCopyMode sameShell)
 Построить точечный каркас по исходным данным. Подробнее...
 
virtual void GetProperties (MbProperties &)
 Выдать свойства объекта.
 
virtual void SetProperties (const MbProperties &)
 Записать свойства объекта.
 
virtual MbePrompt GetPropertyName ()=0
 Выдать заголовок свойства объекта.
 
virtual void Refresh (MbFaceShell &)
 Обновить форму оболочки.
 
virtual void Refresh (MbWireFrame &)
 Обновить форму каркаса.
 
virtual void GetBasisItems (RPArray< MbSpaceItem > &)
 Дать базовые объекты.
 
virtual void GetBasisPoints (MbControlData3D &) const
 Выдать контрольные точки объекта.
 
virtual void SetBasisPoints (const MbControlData3D &)
 Изменить объект по контрольным точкам.
 
virtual bool GetInternalCreators (MbeCreatorType, c3d::ConstCreatorsSPtrVector &) const
 Получить внутренние построители по типу.
 
virtual bool SetInternalCreators (MbeCreatorType, c3d::CreatorsSPtrVector &)
 Получить внутренние построители по типу.
 
virtual void SetYourVersion (VERSION version, bool forAll)
 Установить версию объектов.
 
VERSION GetYourVersion () const
 Выдать версию объекта.
 
const MbSNameMakerGetYourName () const
 Выдать именователь объекта.
 
MbSNameMakerSetYourName ()
 Выдать именователь объекта для редактирования.
 
void SetName (const MbSNameMaker &n)
 Установить именователь объекта.
 
SimpleName GetMainName () const
 Выдать главное имя объекта.
 
void SetMainName (SimpleName n)
 Установить главное имя объекта.
 
MbeProcessState GetStatus () const
 Выдать флаг состояния.
 
void SetStatus (MbeProcessState l)
 Установить флаг состояния.
 
void PrepareWrite ()
 Регистрировать объект. Подробнее...
 
- Открытые члены унаследованные от MbRefItem
 MbRefItem ()
 Конструктор без параметров.
 
refcount_t GetUseCount () const
 Выдать количество ссылок (выдать количество владельцев объекта).
 
refcount_t AddRef () const
 Увеличить количество ссылок на единицу.
 
refcount_t DecRef () const
 Уменьшить количество ссылок на единицу.
 
refcount_t Release () const
 Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя.
 
- Открытые члены унаследованные от TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Конструктор.
 
 TapeBase (const TapeBase &other)
 Конструктор копирования
 
virtual ~TapeBase ()
 Деструктор.
 
RegistrableRec GetRegistrable () const
 Является ли потоковый класс регистрируемым.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Установить состояние регистрации потокового класса.
 
virtual ClassDescriptor GetClassDescriptor (const VersionContainer &) const =0
 Получить дескриптор класса
 
virtual const char * GetPureName (const VersionContainer &) const
 Получить имя класса.
 
virtual bool IsFamilyRegistrable () const
 Принадлежит ли объект к регистрируемому семейству.
 

Защищенные члены

 MbCreator (MbSNameMaker *)
 Конструктор по именователю.
 
 MbCreator (const MbSNameMaker &)
 Конструктор по именователю.
 
 MbCreator (const MbCreator &)
 Конструктор копирования.
 

Защищенные данные

MbSNameMaker names
 Именователь создаваемых строителем элементов и объектов.
 
MbeProcessState status
 Состояние строителя и результата выполнения операции.
 

Подробное описание

Строитель объекта геометрической модели.

Строитель выполняет одно действие при построении объекта геометрической модели и содержит необходимую для этого информацию.
Множество строителей образует журнал построения геометрической модели.
Строители наиболее востребованы при создании оболочки тела MbSolid. Изначально оболочки тела строятся на основе кривых или поверхностей. Многие оболочки можно построить путем движения составной кривой, называемой образующей по траектории, заданной направляющей кривой. Можно построить оболочку, проходящую по заданному набору кривых. На основе поверхности можно построить оболочку в форме листа конечной толщины. Подобные оболочки назовём простыми.
Более сложные оболочки можно получить с помощью операций. Операцией называется совокупность действий над оболочками, которая приводит к рождению новой оболочки.
Примерами операций служат булевы операции, построение тонкостенной оболочки, построение скруглений или фасок рёбер.

Методы

◆ Duplicate()

virtual MbCreator& MbCreator::Duplicate ( MbRegDuplicate iReg = NULL) const
pure virtual

Создать копию объекта.

Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.

Аргументы
[in]iReg- Регистратор.
Возвращает
Копия объекта.

Замещается в MbCurveEvolutionSolid, MbReverseCreator, MbElementarySolid, MbNurbsModification, MbSheetMetalSolid, MbCurveSweptSolid, MbAttributeProvider, MbCurveExtrusionSolid, MbStitchedSolid, MbHoleSolid, MbTruncatedShell, MbBooleanSolid, MbCurveRevolutionSolid, MbSimpleCreator, MbCurveLoftedSolid, MbShellSolid, MbJogSolid, MbDraftSolid, MbOffsetCurveCreator, MbConnectingCurveCreator, MbFilletSolid, MbFaceModifiedSolid, MbBendsByEdgesSolid, MbBeadSolid, MbCuttingSolid, MbJointBendSolid, MbJalousieSolid, MbPatchCreator, MbStampSolid, MbSurfaceSplineCreator, MbNurbsSurfacesSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbNurbs3DCreator, MbProjCurveCreator, MbBendOverSegSolid, MbRuledSolid, MbSphericalStampSolid, MbMedianShell, MbExtensionShell, MbBendAnySolid, MbDuplicationSolid, MbRuledShell, MbSheetUnionSolid, MbStampRibSolid, MbRestoredEdgesSolid, MbUnionSolid, MbSymmetrySolid, MbRibSolid, MbThinShellCreator, MbTransformedSolid, MbDetachSolid, MbMeshShell, MbSimplifyFlatSolid, MbSmoothSolid, MbModifiedNurbsItem, MbSplitShell, MbNurbsBlockSolid, MbChamferSolid, MbIntCurveCreator и MbJoinShell.

◆ Transform()

virtual void MbCreator::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = NULL 
)
pure virtual

Преобразовать согласно матрице.

Преобразовать исходный объект согласно матрице c использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то вложенные объекты так же преобразуются согласно матрице. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих трансформации.

Аргументы
[in]matr- Матрица преобразования.
[in]iReg- Регистратор.

Замещается в MbCurveEvolutionSolid, MbReverseCreator, MbElementarySolid, MbNurbsModification, MbSheetMetalSolid, MbCurveSweptSolid, MbCurveExtrusionSolid, MbStitchedSolid, MbTruncatedShell, MbAttributeProvider, MbHoleSolid, MbJogSolid, MbOffsetCurveCreator, MbCurveRevolutionSolid, MbSimpleCreator, MbConnectingCurveCreator, MbCurveLoftedSolid, MbShellSolid, MbBeadSolid, MbBendsByEdgesSolid, MbJointBendSolid, MbBooleanSolid, MbDraftSolid, MbFaceModifiedSolid, MbJalousieSolid, MbStampSolid, MbSurfaceSplineCreator, MbFilletSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbNurbs3DCreator, MbPatchCreator, MbProjCurveCreator, MbBendOverSegSolid, MbRuledSolid, MbSphericalStampSolid, MbCuttingSolid, MbNurbsSurfacesSolid, MbBendAnySolid, MbMedianShell, MbRestoredEdgesSolid, MbRuledShell, MbExtensionShell, MbSimplifyFlatSolid, MbDuplicationSolid, MbStampRibSolid, MbTransformedSolid, MbUnionSolid, MbIntCurveCreator, MbMeshShell, MbSymmetrySolid, MbModifiedNurbsItem, MbRibSolid, MbThinShellCreator, MbDetachSolid, MbNurbsBlockSolid, MbSheetUnionSolid, MbSmoothSolid, MbSplitShell и MbJoinShell.

◆ Move()

virtual void MbCreator::Move ( const MbVector3D to,
MbRegTransform iReg = NULL 
)
pure virtual

Сдвинуть вдоль вектора.

Сдвинуть геометрический объект вдоль вектора с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция сдвига. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих сдвигу.

Аргументы
[in]to- Вектор сдвига.
[in]iReg- Регистратор.

Замещается в MbCurveEvolutionSolid, MbReverseCreator, MbElementarySolid, MbNurbsModification, MbSheetMetalSolid, MbCurveSweptSolid, MbCurveExtrusionSolid, MbStitchedSolid, MbTruncatedShell, MbAttributeProvider, MbHoleSolid, MbJogSolid, MbOffsetCurveCreator, MbCurveRevolutionSolid, MbSimpleCreator, MbConnectingCurveCreator, MbCurveLoftedSolid, MbShellSolid, MbBeadSolid, MbBendsByEdgesSolid, MbJointBendSolid, MbBooleanSolid, MbDraftSolid, MbFaceModifiedSolid, MbJalousieSolid, MbStampSolid, MbSurfaceSplineCreator, MbFilletSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbNurbs3DCreator, MbPatchCreator, MbProjCurveCreator, MbBendOverSegSolid, MbRuledSolid, MbSphericalStampSolid, MbCuttingSolid, MbNurbsSurfacesSolid, MbBendAnySolid, MbMedianShell, MbRestoredEdgesSolid, MbRuledShell, MbExtensionShell, MbSimplifyFlatSolid, MbDuplicationSolid, MbStampRibSolid, MbTransformedSolid, MbUnionSolid, MbIntCurveCreator, MbMeshShell, MbSymmetrySolid, MbModifiedNurbsItem, MbRibSolid, MbThinShellCreator, MbDetachSolid, MbNurbsBlockSolid, MbSheetUnionSolid, MbSmoothSolid, MbSplitShell и MbJoinShell.

◆ Rotate()

virtual void MbCreator::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = NULL 
)
pure virtual

Повернуть объект вокруг оси.

Повернуть объект вокруг оси на заданный угол с использованием регистратора. Если объект содержит ссылки на другие геометрические объекты, то к вложенным объектам так же применяется операция поворота. Регистратор служит для предотвращения многократного преобразования объекта. Допустимо использовать функцию без регистратора, если надо преобразовать одиночный объект. Если надо преобразовать набор взаимосвязанных объектов, необходимо использовать регистратор для предотвращения повторного преобразования вложенных объектов, поскольку не исключена ситуация, когда несколько объектов из набора содержат ссылки на один или несколько общих объектов, подлежащих повороту.

Аргументы
[in]axis- Ось поворота.
[in]angle- Угол поворота.
[in]iReg- Регистратор.

Замещается в MbCurveEvolutionSolid, MbReverseCreator, MbElementarySolid, MbNurbsModification, MbSheetMetalSolid, MbCurveSweptSolid, MbCurveExtrusionSolid, MbStitchedSolid, MbTruncatedShell, MbAttributeProvider, MbHoleSolid, MbJogSolid, MbOffsetCurveCreator, MbCurveRevolutionSolid, MbSimpleCreator, MbConnectingCurveCreator, MbCurveLoftedSolid, MbShellSolid, MbBeadSolid, MbBendsByEdgesSolid, MbJointBendSolid, MbBooleanSolid, MbDraftSolid, MbFaceModifiedSolid, MbJalousieSolid, MbStampSolid, MbSurfaceSplineCreator, MbFilletSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbNurbs3DCreator, MbPatchCreator, MbProjCurveCreator, MbBendOverSegSolid, MbRuledSolid, MbSphericalStampSolid, MbCuttingSolid, MbNurbsSurfacesSolid, MbBendAnySolid, MbMedianShell, MbRestoredEdgesSolid, MbRuledShell, MbExtensionShell, MbSimplifyFlatSolid, MbDuplicationSolid, MbStampRibSolid, MbTransformedSolid, MbUnionSolid, MbIntCurveCreator, MbMeshShell, MbSymmetrySolid, MbModifiedNurbsItem, MbRibSolid, MbThinShellCreator, MbDetachSolid, MbNurbsBlockSolid, MbSheetUnionSolid, MbSmoothSolid, MbSplitShell и MbJoinShell.

◆ IsSame()

virtual bool MbCreator::IsSame ( const MbCreator other,
double  accuracy 
) const
pure virtual

◆ IsSimilar()

virtual bool MbCreator::IsSimilar ( const MbCreator item) const
virtual

Являются ли объекты подобными?

Подобными считаются однотипные объекты, данные которых можно приравнять или данные так же являются подобными (указатели). Подобный объект можно инициализировать по данным подобного ему объекта (приравнять один другому без изменения адресов).

Аргументы
[in]item- Объект для сравнения.
Возвращает
Подобны ли объекты.

Переопределяется в MbCurveEvolutionSolid, MbReverseCreator, MbElementarySolid, MbSheetMetalSolid, MbCurveExtrusionSolid, MbTruncatedShell, MbCurveSweptSolid, MbHoleSolid, MbCurveRevolutionSolid, MbSimpleCreator, MbBooleanSolid, MbCurveLoftedSolid, MbShellSolid, MbAttributeProvider, MbDraftSolid, MbCuttingSolid, MbPatchCreator, MbJogSolid, MbOffsetCurveCreator, MbConnectingCurveCreator, MbBendsByEdgesSolid, MbBeadSolid, MbJointBendSolid, MbUnionSolid, MbJalousieSolid, MbExtensionShell, MbStampSolid, MbSurfaceSplineCreator, MbDuplicationSolid, MbSheetUnionSolid, MbStampRibSolid, MbThinShellCreator, MbSymmetrySolid, MbRibSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbSmoothSolid, MbSplitShell, MbDetachSolid, MbNurbs3DCreator, MbProjCurveCreator, MbBendOverSegSolid, MbRuledSolid, MbSphericalStampSolid, MbMedianShell, MbBendAnySolid, MbRestoredEdgesSolid, MbJoinShell, MbSimplifyFlatSolid и MbIntCurveCreator.

◆ CreateShell() [1/2]

virtual bool MbCreator::CreateShell ( MbFaceShell *&  shell,
MbeCopyMode  sameShell,
RPArray< MbSpaceItem > *  items = NULL 
)
virtual

Построить оболочку по исходным данным.

Построение новой или модификация присланной оболочки по исходным данным согласно строителю.

Аргументы
[in]shell- Подлежащая модификации или новая оболочка.
[in]sameShell- Полнота копирования элементов при построении.
[in]items- Контейнер для складывания элементов невыполненных построений (может быть NULL).
Возвращает
Выполнено ли построение.

Переопределяется в MbReverseCreator, MbElementarySolid, MbNurbsModification, MbSheetMetalSolid, MbCurveSweptSolid, MbCurveExtrusionSolid, MbStitchedSolid, MbTruncatedShell, MbHoleSolid, MbAttributeProvider, MbBooleanSolid, MbSimpleCreator, MbJogSolid, MbShellSolid, MbBeadSolid, MbDraftSolid, MbBendsByEdgesSolid, MbJalousieSolid, MbStampSolid, MbCuttingSolid, MbFilletSolid, MbFaceModifiedSolid, MbJointBendSolid, MbPatchCreator, MbBendOverSegSolid, MbSphericalStampSolid, MbRuledSolid, MbNurbsSurfacesSolid, MbBendUnbendSolid, MbClosedCornerSolid, MbUnionSolid, MbBendAnySolid, MbExtensionShell, MbRuledShell, MbMedianShell, MbRestoredEdgesSolid, MbSheetUnionSolid, MbStampRibSolid, MbThinShellCreator, MbDuplicationSolid, MbSymmetrySolid, MbMeshShell, MbRibSolid, MbSimplifyFlatSolid, MbJoinShell, MbSmoothSolid, MbSplitShell, MbTransformedSolid, MbNurbsBlockSolid, MbDetachSolid, MbModifiedNurbsItem и MbChamferSolid.

◆ CreateShell() [2/2]

bool MbCreator::CreateShell ( SPtr< MbFaceShell > &  shell,
MbeCopyMode  sameShell 
)

Построить оболочку по исходным данным.

Построение новой или модификация присланной оболочки по исходным данным согласно строителю.

Аргументы
[in]shell- Подлежащая модификации или новая оболочка.
[in]sameShell- Полнота копирования элементов при построении.
Возвращает
Выполнено ли построение.

◆ CreateWireFrame() [1/2]

virtual bool MbCreator::CreateWireFrame ( MbWireFrame *&  frame,
MbeCopyMode  sameShell,
RPArray< MbSpaceItem > *  items = NULL 
)
virtual

Построить проволочный каркас по исходным данным.

Построение нового каркаса (кривых) или модификация присланного каркаса по исходным данным согласно строителю.

Аргументы
[in]frame- Подлежащий модификации или новый каркас.
[in]sameShell- Полнота копирования элементов при построении.
[in]items- Контейнер для складывания элементов невыполненных построений (может быть NULL).
Возвращает
Выполнено ли построение.

Переопределяется в MbOffsetCurveCreator, MbSurfaceSplineCreator, MbProjCurveCreator, MbNurbs3DCreator и MbIntCurveCreator.

◆ CreateWireFrame() [2/2]

bool MbCreator::CreateWireFrame ( SPtr< MbWireFrame > &  frame,
MbeCopyMode  sameShell 
)

Построить проволочный каркас по исходным данным.

Построение нового каркаса (кривых) или модификация присланного каркаса по исходным данным согласно строителю.

Аргументы
[in]frame- Подлежащий модификации или новый каркас.
[in]sameShell- Полнота копирования элементов при построении.
Возвращает
Выполнено ли построение.

◆ CreatePointFrame() [1/2]

virtual bool MbCreator::CreatePointFrame ( MbPointFrame *&  frame,
MbeCopyMode  sameShell,
RPArray< MbSpaceItem > *  items = NULL 
)
virtual

Построить точечный каркас по исходным данным.

Построение нового каркаса (точек) или модификация присланного каркаса по исходным данным согласно строителю.

Аргументы
[in]frame- Подлежащий модификации или новый каркас.
[in]sameShell- Полнота копирования элементов при построении.
[in]items- Контейнер для складывания элементов невыполненных построений (может быть NULL).
Возвращает
Выполнено ли построение.

◆ CreatePointFrame() [2/2]

bool MbCreator::CreatePointFrame ( SPtr< MbPointFrame > &  frame,
MbeCopyMode  sameShell 
)

Построить точечный каркас по исходным данным.

Построение нового каркаса (точек) или модификация присланного каркаса по исходным данным согласно строителю.

Аргументы
[in]frame- Подлежащий модификации или новый каркас.
[in]sameShell- Полнота копирования элементов при построении.
Возвращает
Выполнено ли построение.

◆ PrepareWrite()

void MbCreator::PrepareWrite ( )
inline

Регистрировать объект.

Регистрация объекта для предотвращения его многократной записи. Другие объекты могут содержать указатель на данный объект. Функция взводит флаг, который позволяет записывать объект один раз, а в остальных записях ссылаться на записанный экземпляр. Чтение так же выполняется один раз, а в остальных случаях чтения подставляется адрес уже прочитанного объекта.


Объявления и описания членов класса находятся в файле: