Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer


Use WriteClass to store the version and class information of a base class during serialization of the derived class.

void WriteClass(
   const CRuntimeClass* pClassRef 


A pointer to the CRuntimeClass structure that corresponds to the class reference requested.


WriteClass writes a reference to the CRuntimeClass for the base class to the CArchive. Use CArchive::ReadClass to retrieve the reference.

WriteClass verifies that the archived class information is compatible with your runtime class. If it is not compatible, WriteClass will throw a CArchiveException.

Your runtime class must use DECLARE_SERIAL and IMPLEMENT_SERIAL; otherwise, WriteClass will throw a CNotSupportedException.

You can use SerializeClass instead of WriteClass, which handles both reading and writing of the class reference.


CFile myFile("myfile.dat", CFile::modeCreate | CFile::modeReadWrite);

// Create a storing archive.
CArchive arStore(&myFile, CArchive::store);

// Store the class CAge in the archive.
arStore.WriteClass( RUNTIME_CLASS(CAge) );

// Close the storing archive.

// Create a loading archive.
CArchive arLoad(&myFile, CArchive::load);

// Load a class from the archive.
CRuntimeClass* pClass = arLoad.ReadClass( );
if (!pClass->IsDerivedFrom(RUNTIME_CLASS(CAge)))

See Also

CArchive Overview | Class Members | Hierarchy Chart | CArchive::ReadClass | CArchive::GetObjectSchema | CArchive::SetObjectSchema | CArchive::SerializeClass | CArchiveException | CNotSupportedException | CObList::CObList

© 2015 Microsoft