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

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

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

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. 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

  1. Derivare la classe da CObject.

  2. Utilizzare la macro DECLARE_DYNCREATE nella dichiarazione di classe.

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

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

Per aggiungere il supporto per la serializzazione

  1. Derivare la classe da CObject.

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

  3. Utilizzare la macro DECLARE_edizione Standard RIAL nella dichiarazione di classe.

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

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

Vedi anche

Derivazione da una classe da CObject