Freigeben über


IMPLEMENT_DYNCREATE

Aktiviert CObject- Objekte von dynamisch die zur Laufzeit erstellt werden abgeleiteten Klassen, wenn Sie mit dem DECLARE_DYNCREATE-Makro verwendet werden.

IMPLEMENT_DYNCREATE(class_name, base_class_name )

Parameter

  • class_name
    Der tatsächliche Name der Klasse.

  • base_class_name
    Der tatsächliche Name der Basisklasse.

Hinweise

Das Framework verwendet diese Fähigkeit, neue Objekte dynamisch erzeugen beispielsweise wenn ein Objekt vom Datenträger während der Serialisierung liest. Fügen Sie dem IMPLEMENT_DYNCREATE-Makro in der Klassenimplementierungsdatei hinzu. Weitere Informationen finden Sie unter CObject-Klassen-Themen.

Wenn Sie die DECLARE_DYNCREATE und IMPLEMENT_DYNCREATE-Makros verwenden, können Sie das Makro RUNTIME_CLASS und die CObject::IsKindOf-Memberfunktion dann verwenden, um die Klasse der Objekte zur Laufzeit zu bestimmen.

Wenn DECLARE_DYNCREATE in der Klasse enthalten ist, muss IMPLEMENT_DYNCREATE in diesem Fall der eingeschlossen werden.

Beachten Sie, dass diese Makrodefinition den Standardkonstruktor für die Klasse aufruft. Wenn ein nicht trivialer Konstruktor explizit durch die Klasse implementiert wird, muss sie den Standardkonstruktor auch explizit ebenfalls implementieren. Der Standardkonstruktor kann der private-Klasse oder den protected-Memberabschnitten hinzugefügt werden, um zu verhindern, dass er außerhalb der Klassenimplementierung aufgerufen.

Beispiel

class CMyDynCreateObj : public CObject
{
     int m_Num;
public:
     DECLARE_DYNCREATE(CMyDynCreateObj)
     CMyDynCreateObj(int Num) { m_Num = Num; }
private:
     CMyDynCreateObj() { m_Num = 0; }  // provide default constructor only for 
                                       // dynamic creation 
};
IMPLEMENT_DYNCREATE(CMyDynCreateObj, CObject)

Anforderungen

Header: afx.h

Siehe auch

Referenz

DECLARE_DYNCREATE

RUNTIME_CLASS

CObject::IsKindOf

Konzepte

MFC-Makros, globale Funktionen und globale Variablen