Dela via


Ange funktionalitetsnivåer

Den här artikeln beskriver hur du lägger till följande funktioner i din CObject-härledda klass:

  • Information om körningsklass

  • Stöd för dynamiskt skapande

  • Stöd för serialisering

En allmän beskrivning av CObject funktioner finns i artikeln Deriving a Class from CObject (Härled en klass från CObject).

Så här lägger du till information om körningsklass

  1. Härled klassen från CObject, enligt beskrivningen i artikeln Deriving a Class from CObject (Härled en klass från CObject ).

  2. Använd DECLARE_DYNAMIC makrot i klassdeklarationen, som du ser här:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Använd makrot IMPLEMENT_DYNAMIC i implementeringsfilen (. CPP) för din klass. Det här makrot tar som argument namnet på klassen och dess basklass enligt följande:

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Anmärkning

Placera alltid IMPLEMENT_DYNAMIC i implementeringsfilen (. CPP) för din klass. Det IMPLEMENT_DYNAMIC makrot bör bara utvärderas en gång under en kompilering och bör därför inte användas i en gränssnittsfil (. H) som potentiellt kan ingå i mer än en fil.

Lägga till stöd för dynamiskt skapande

  1. Basera din klass på CObject.

  2. Använd makrot DECLARE_DYNCREATE i klassdeklarationen.

  3. Definiera en konstruktor utan argument (en standardkonstruktor).

  4. Använd makrot IMPLEMENT_DYNCREATE i klassimplementeringsfilen.

Lägga till serialiseringsstöd

  1. Basera din klass på CObject.

  2. Åsidosätt Serialize medlemsfunktionen.

    Anmärkning

    Om du anropar Serialize direkt, det vill säga att du inte vill serialisera objektet via en polymorf pekare, utelämna steg 3 till och med 5.

  3. Använd DECLARE_SERIAL makrot i klassdeklarationen.

  4. Definiera en konstruktor utan argument (en standardkonstruktor).

  5. Använd IMPLEMENT_SERIAL makrot i klassimplementeringsfilen.

Anmärkning

En "polymorf pekare" pekar på ett objekt i en klass (kalla den A) eller till ett objekt i en klass som härletts från A (till exempel B). För att serialisera genom en polymorf pekare måste ramverket fastställa körningsklassen för objektet som det serialiserar (B), eftersom det kan vara ett objekt från vilken klass som helst som härletts från en basklass (A).

Mer information om hur du aktiverar serialisering när du härleder din klass från CObjectfinns i artiklarna Filer i MFC och Serialisering.

Se även

Att härleda en klass från CObject