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