Freigeben über


Festlegen von Funktionalitätsebenen

In diesem Artikel wird beschrieben, wie Sie der von CObject abgeleiteten Klasse die folgenden Funktionalitätsebenen hinzufügen:

  • Laufzeitklasseninformationen

  • Unterstützung für dynamische Erstellung

  • Serialisierungsunterstützung

Eine allgemeine Beschreibung der CObject Funktionalität finden Sie im Artikel zum Ableiten einer Klasse von CObject.

So fügen Sie Laufzeitklasseninformationen hinzu

  1. Leiten Sie Ihre Klasse ab CObject, wie im Artikel "Ableiten einer Klasse von CObject " beschrieben.

  2. Verwenden Sie das DECLARE_DYNAMIC Makro in Der Klassendeklaration, wie hier gezeigt:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Verwenden Sie das IMPLEMENT_DYNAMIC-Makro in der Implementierungsdatei (. CPP) Ihres Kurses. Dieses Makro verwendet als Argumente den Namen der Klasse und deren Basisklasse wie folgt:

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Hinweis

Setzen Sie IMPLEMENT_DYNAMIC immer in die Implementierungsdatei (. CPP) für Ihren Kurs. Das IMPLEMENT_DYNAMIC Makro sollte nur einmal während einer Kompilierung ausgewertet werden und daher nicht in einer Schnittstellendatei verwendet werden (. H) die möglicherweise in mehr als einer Datei enthalten sein könnten.

So fügen Sie unterstützung für die dynamische Erstellung hinzu

  1. Leiten Sie Ihren Kurs von CObject.

  2. Verwenden Sie das DECLARE_DYNCREATE-Makro in der Klassendeklaration.

  3. Definieren Sie einen Konstruktor ohne Argumente (standardkonstruktor).

  4. Verwenden Sie das IMPLEMENT_DYNCREATE-Makro in der Klassenimplementierungsdatei.

So fügen Sie die Serialisierungsunterstützung hinzu

  1. Leiten Sie Ihren Kurs von CObject.

  2. Überschreiben Sie die Serialize Memberfunktion.

    Hinweis

    Wenn Sie direkt aufrufen Serialize , d. h., Sie möchten das Objekt nicht über einen polymorphen Zeiger serialisieren, und lassen Sie die Schritte 3 bis 5 weg.

  3. Verwenden Sie das DECLARE_SERIAL Makro in der Klassendeklaration.

  4. Definieren Sie einen Konstruktor ohne Argumente (standardkonstruktor).

  5. Verwenden Sie das IMPLEMENT_SERIAL-Makro in der Klassenimplementierungsdatei.

Hinweis

Ein "polymorpher Zeiger" verweist auf ein Objekt einer Klasse (nennen Sie sie A) oder auf ein Objekt einer von A abgeleiteten Klasse (z. B.). Um über einen polymorphen Zeiger serialisiert zu werden, muss das Framework die Laufzeitklasse des Objekts bestimmen, das es serialisiert (B), da es sich um ein Objekt einer beliebigen Klasse handeln kann, die von einer Basisklasse (A) abgeleitet ist.

Weitere Informationen zum Aktivieren der Serialisierung, wenn Sie ihre Klasse ableiten CObject, finden Sie in den Artikeln "Dateien in MFC " und "Serialisierung".

Siehe auch

Ableiten einer Klasse von CObject