Specificare i livelli di funzionalità

In questo articolo viene descritto come aggiungere i seguenti livelli di funzionalità al CObjectclasse derivata:

  • Informazioni sulla classe di runtime

  • Supporto dinamico di creazione

  • 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

  1. Derivare la classe da CObject, come descritto nell'articolo di Derivando una classe da CObject .

  2. Utilizzare la macro di DECLARE_DYNAMIC nella dichiarazione di classe, come illustrato di seguito:

    class CPerson : public CObject 
    {
       DECLARE_DYNAMIC( CPerson )
    
       // other declarations
    };
    
  3. 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) per la classe.La macro di IMPLEMENT_DYNAMIC deve essere valutata soltanto una volta durante la compilazione e pertanto non deve essere utilizzata in un file di interfaccia (. H) che potrebbe potenzialmente essere incluso in più file.

Per aggiungere il supporto dinamico di creazione

  1. Derivare la classe da CObject.

  2. Utilizzare la macro di DECLARE_DYNCREATE nella dichiarazione di classe.

  3. Definire un costruttore senza argomenti (un costruttore predefinito).

  4. Utilizzare la macro di IMPLEMENT_DYNCREATE nel file di implementazione della classe.

Per aggiungere il supporto della serializzazione

  1. Derivare la classe da CObject.

  2. 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.

  3. Utilizzare la macro di DECLARE_SERIAL nella dichiarazione di classe.

  4. Definire un costruttore senza argomenti (un costruttore predefinito).

  5. Utilizzare la macro di IMPLEMENT_SERIAL nel file di implementazione della classe.

[!NOTA]

Punti “di un puntatore polimorfico„ in un oggetto di classe (chiamata A) o a un oggetto di qualsiasi classe derivata da A (comunicare a, B).Per serializzare tramite un puntatore polimorfico, il framework deve determinare la classe di runtime dell'oggetto che si serializzano (B), poiché potrebbe essere un oggetto di qualsiasi classe derivata da una classe di base ().

Per ulteriori informazioni su come attivare la serializzazione quando si deriva una classe da CObject, vedere gli articoli file in MFC e serializzazione.

Vedere anche

Concetti

Derivando una classe da CObject