Specifica dei livelli di funzionalità
Questo articolo descrive come aggiungere i livelli di funzionalità seguenti alla classe derivata da CObject:
Informazioni sulle classi di runtime
Supporto per la creazione dinamica
Supporto per la serializzazione
Per una descrizione generale delle funzionalità, vedere l'articolo Derivazione di CObject
una classe da CObject.
Per aggiungere informazioni sulla classe di runtime
Derivare la classe da
CObject
, come descritto nell'articolo Derivazione di una classe da CObject .Usare la macro DECLARE_DYNAMIC nella dichiarazione di classe, come illustrato di seguito:
class CPerson : public CObject { DECLARE_DYNAMIC(CPerson) // other declarations };
Utilizzare la macro IMPLEMENT_DYNAMIC nel file di implementazione (. CPP) della classe. Questa macro accetta come argomenti il nome della classe e la relativa classe di base, come indicato di seguito:
IMPLEMENT_DYNAMIC(CPerson, CObject)
Nota
Inserire sempre IMPLEMENT_DYNAMIC nel file di implementazione (. CPP) per la classe. La macro IMPLEMENT_DYNAMIC deve essere valutata una sola volta durante una compilazione e pertanto non deve essere utilizzata in un file di interfaccia (. H) che potrebbe essere potenzialmente incluso in più file.
Per aggiungere il supporto per la creazione dinamica
Derivare la classe da
CObject
.Utilizzare la macro DECLARE_DYNCREATE nella dichiarazione di classe.
Definire un costruttore senza argomenti (un costruttore predefinito).
Utilizzare la macro IMPLEMENT_DYNCREATE nel file di implementazione della classe.
Per aggiungere il supporto per la serializzazione
Derivare la classe da
CObject
.Eseguire l'override della
Serialize
funzione membro.Nota
Se si chiama
Serialize
direttamente, ovvero non si vuole serializzare l'oggetto tramite un puntatore polimorfico, omettere i passaggi da 3 a 5.Utilizzare la macro DECLARE_edizione Standard RIAL nella dichiarazione di classe.
Definire un costruttore senza argomenti (un costruttore predefinito).
Usare la macro IMPLEMENT_edizione Standard RIAL nel file di implementazione della classe.
Nota
Un "puntatore polimorfico" punta a un oggetto di una classe (chiamarlo A) o a un oggetto di qualsiasi classe derivata da A (ad esempio, B). Per serializzare tramite un puntatore polimorfico, il framework deve determinare la classe di runtime dell'oggetto che sta serializzando (B), perché potrebbe essere un oggetto di qualsiasi classe derivata da una classe base (A).
Per altre informazioni su come abilitare la serializzazione quando si deriva la classe da CObject
, vedere gli articoli File in MFC e Serializzazione.