Freigeben über


CArchive::SerializeClass

Rufen Sie die Memberfunktion auf, wenn Sie die Versionsinformationen einer Basisklasse speichern und laden möchten.

void SerializeClass(
   const CRuntimeClass* pClassRef 
);

Parameter

  • pClassRef
    Ein Zeiger auf einen Ablaufklassenobjekt für die Basisklasse.

Hinweise

SerializeClass liest oder schreibt den Verweis auf eine Klasse CArchive-Objekt, abhängig von der Richtung CArchive.Verwenden Sie SerializeClass anstelle ReadClass und WriteClass als einfache Möglichkeit, Basisklassenobjekte zu serialisieren; SerializeClass erfordert weniger Code und weniger Parameter.

Wie ReadClassSerializeClass überprüft, dass die archivierten Klasseninformationen mit der Laufzeitklasse kompatibel sind.Wenn es nicht kompatibel ist, löst SerializeClassCArchiveException aus.

die Laufzeitklasse muss DECLARE_SERIAL und IMPLEMENT_SERIAL verwenden; andernfalls löst SerializeClassCNotSupportedException aus.

Verwenden Sie das RUNTIME_CLASS-Makro, um den Wert für den Parameter pRuntimeClass abzurufen.Die Basisklasse muss das IMPLEMENT_SERIAL-Makro verwendet haben.

Beispiel

class CBaseClass : public CObject 
{
   DECLARE_SERIAL(CBaseClass);
};
class CDerivedClass : public CBaseClass
{
public:
   virtual void Serialize(CArchive& ar);
};
void CDerivedClass::Serialize(CArchive& ar)
{
   if (ar.IsStoring())
   {
      //normal code for storing contents 
      //of this object
   }
   else
   {
      //normal code for reading contents 
      //of this object
   }

   //allow the base class to serialize along 
   //with its version information
   ar.SerializeClass(RUNTIME_CLASS(CBaseClass));
   CBaseClass::Serialize(ar);
}

Anforderungen

Header: afx.h

Siehe auch

Referenz

CArchive-Klasse

Hierarchien-Diagramm

CArchive::ReadClass

CArchive::WriteClass

CArchive::GetObjectSchema

CArchive::SetObjectSchema

CArchiveExceptions-Klasse

CNotSupportedExceptions-Klasse