Шаг 221 - IsSerializable

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

BOOL IsSerializable( ) const;

Для того, чтобы класс мог быть преобразован в последовательную форму в объявлении класса должно быть объявлено DECLARE_SERIAL, а в реализации IMPLEMENT_SERIAL смотрим пример:

#include "stdafx.h"
#include "afxwin.h"
#include "iostream.h"

class CMyObject : public CObject
{
protected:
	DECLARE_DYNCREATE(CMyObject)
};

IMPLEMENT_DYNCREATE(CMyObject,CObject);

class CAlternativeObject : public CObject
{
protected:
	DECLARE_SERIAL(CAlternativeObject);	
};

IMPLEMENT_SERIAL(CAlternativeObject,CObject,1);

void CreateAllObject(CRuntimeClass* pClass);

void main()
{
	CMyObject cm;
	CAlternativeObject ca;
	if (cm.IsSerializable())
		cout << "CMyObject serialize" << endl;
	if (ca.IsSerializable())
		cout << "CAlternativeObject serialize" << endl;  
}

В классе CAlternativeObject объявлен механизм сохранения и восстановления объекта с помощью макросов, поэтому IsSerializable и даем возможность нам вывести надпись.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 17.08.2000