Specifica dei livelli di funzionalità
In questo articolo viene descritto come aggiungere i seguenti livelli di funzionalità al CObject- classe derivata:
Informazioni sulla classe di runtime
Supporto dinamico di progettazione
Supporto della serializzazione
Per una descrizione generale di funzionalità di CObject, vedere l'articolo Derivando una classe da CObject.
Per aggiungere informazioni sulla classe di runtime
Derivare la classe da CObject, come descritto nell'articolo di Derivando una classe da CObject.
Utilizzare la macro di DECLARE_DYNAMIC nella dichiarazione di classe, come illustrato di seguito:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Utilizzare la macro di IMPLEMENT_DYNAMIC nel file di implementazione (.CPP) della classe. Questa macro accetta come argomenti il nome della classe e della relativa classe base, come segue:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Nota
IMPLEMENT_DYNAMIC sempre inserito nel file di implementazione (.CPP) della classe.La macro di IMPLEMENT_DYNAMIC deve essere valutata soltanto una volta durante la compilazione e non deve essere utilizzata in un file di interfaccia (. H) che potrebbe potenzialmente essere incluso in più file.
Per aggiungere il supporto dinamico di progettazione
Derivare la classe da CObject.
Utilizzare la macro di DECLARE_DYNCREATE nella dichiarazione di classe.
Definire un costruttore senza argomenti (un costruttore predefinito).
Utilizzare la macro di IMPLEMENT_DYNCREATE nel file di implementazione della classe.
Per aggiungere il supporto della serializzazione
Derivare la classe da CObject.
Eseguire l'override della funzione membro di Serialize.
Nota
Se si chiama direttamente Serialize, ovvero, non si desidera serializzare l'oggetto tramite un puntatore polimorfico, omettere i passaggi da 3 a 5.
Utilizzare la macro di DECLARE_SERIAL nella dichiarazione di classe.
Definire un costruttore senza argomenti (un costruttore predefinito).
Utilizzare la macro di IMPLEMENT_SERIAL nel file di implementazione della classe.
Nota
Punti "di un puntatore polimorfico" a un oggetto di una classe (chiamata A) o a un oggetto di qualsiasi classe derivata da ricordare (A, B).Per serializzare tramite un puntatore polimorfico, il framework deve determinare la classe di runtime dell'oggetto che si sta la serializzazione (B), poiché potrebbe essere un oggetto di qualsiasi classe derivata da una classe di base (A).
Per ulteriori informazioni su come attivare la serializzazione quando si deriva la classe da CObject, vedere gli articoli File in MFC e Serializzazione.