Angeben von Ebenen der Funktionen
In diesem Artikel wird beschrieben, wie die folgenden Ebenen der Funktionalität der von CObject abgeleitete Klasse hinzugefügt wird:
Der Ablauf klasseninformationen
Dynamische Unterstützung für Builds
Serialisierungsunterstützung
Für eine allgemeine Beschreibung der CObject-Funktionen finden Sie im Artikel Eine Klasse von CObject abgeleitete.
So klasseninformationen Laufzeit hinzufügen
Leiten Sie die Klasse von CObject, wie im Eine Klasse von CObject abgeleitete-Elemente beschrieben.
Verwenden Sie das DECLARE_DYNAMIC Makro in der Klassendeklaration, wie hier gezeigt:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Verwenden Sie das IMPLEMENT_DYNAMIC Makro in der Implementierungsdatei (.CPP) Ihrer Klasse.Dieses Makro als Argumente übernimmt den Namen der Klasse und ihrer Basisklassen wie folgt:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Hinweis |
---|
Setzen Sie immer IMPLEMENT_DYNAMIC in der Implementierungsdatei (.CPP) für die Klasse ein.Das IMPLEMENT_DYNAMIC Makro sollte nur einmal während der Kompilierung ausgewertet werden und darf daher nicht in der Schnittstellendatei (verwendet werden. H), das in mehr als einer Datei aufgenommen werden kann. |
Um dynamische Hinzufügen von Unterstützung für Builds
Leiten Sie die Klasse von CObject.
Verwenden Sie das DECLARE_DYNCREATE Makro in der Klassendeklaration.
Definieren Sie einen Konstruktor ohne Argumente (ein Standardkonstruktor).
Verwenden Sie das IMPLEMENT_DYNCREATE Makro in der Datei Klassenimplementierungs.
Um Serialisierungsunterstützung hinzu
Leiten Sie die Klasse von CObject.
Überschreiben Sie die Serialize-Memberfunktion.
Hinweis Wenn Sie Serialize direkt aufrufen möchten. h. nicht das Objekt durch einen polymorphen Zeiger serialisieren, weglassen die Schritte 3 bis 5.
Verwenden Sie das DECLARE_SERIAL Makro in der Klassendeklaration.
Definieren Sie einen Konstruktor ohne Argumente (ein Standardkonstruktor).
Verwenden Sie das IMPLEMENT_SERIAL Makro in der Datei Klassenimplementierungs.
Hinweis |
---|
Ein "polymorpher Zeiger" zeigt auf ein Objekt einer Klasse (Invoke es A) oder auf ein Objekt einer Klasse abgeleitet von A (sagen Sie b).Um einen polymorphen Zeiger zu serialisieren, muss das Framework die Laufzeitklasse des Objekts ermitteln, welche sie (b) serialisiert, da hierbei möglicherweise ein Objekt einer Klasse sein, die von einigen Basisklasse (A) abgeleitet ist. |
Weitere Informationen über die Verwendung der Serialisierung, wenn Sie die Klasse von CObject abgeleitet sind, finden Sie in den Artikeln Dateien in MFC und Serialisierung aktiviert.