Sdílet prostřednictvím


Určení úrovní funkčnosti

Tento článek popisuje, jak přidat následující úrovně funkčnosti do třídy odvozené od objektu CObject:

  • Informace o třídě za běhu

  • Podpora dynamického vytváření

  • Podpora serializace

Obecný popis CObject funkcí naleznete v článku Odvození třídy z objektu CObject.

Přidání informací o třídě za běhu

  1. Odvození třídy z CObject, jak je popsáno v odvození třídy z CObject článku.

  2. Použijte makro DECLARE_DYNAMIC v deklaraci třídy, jak je znázorněno zde:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Použijte makro IMPLEMENT_DYNAMIC v souboru implementace (. CPP) vašeho předmětu. Toto makro přebírá jako argumenty název třídy a její základní třídu následujícím způsobem:

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Poznámka

Vždy vložte IMPLEMENT_DYNAMIC do souboru implementace (. CPP) pro vaši třídu. Makro IMPLEMENT_DYNAMIC by se mělo vyhodnotit pouze jednou během kompilace, a proto by se nemělo používat v souboru rozhraní (. H), které by mohly být zahrnuty do více než jednoho souboru.

Přidání podpory dynamického vytváření

  1. Odvodit třídu z CObject.

  2. Použijte makro DECLARE_DYNCREATE v deklaraci třídy.

  3. Definujte konstruktor bez argumentů (výchozí konstruktor).

  4. Použijte makro IMPLEMENT_DYNCREATE v souboru implementace třídy.

Přidání podpory serializace

  1. Odvodit třídu z CObject.

  2. Přepište členovu Serialize funkci.

    Poznámka

    Pokud voláte Serialize přímo, to znamená, že nechcete serializovat objekt prostřednictvím polymorfní ukazatel, vynecháte kroky 3 až 5.

  3. Použijte makro DECLARE_SERIAL v deklaraci třídy.

  4. Definujte konstruktor bez argumentů (výchozí konstruktor).

  5. Použijte makro IMPLEMENT_SERIAL v souboru implementace třídy.

Poznámka

"Polymorfní ukazatel" odkazuje na objekt třídy (nazývá ho A) nebo na objekt jakékoli třídy odvozené od A (řekněme B). Aby bylo možné serializovat prostřednictvím polymorfního ukazatele, musí architektura určit třídu runtime objektu, který serializuje (B), protože může být objektem jakékoli třídy odvozené z některé základní třídy (A).

Další podrobnosti o tom, jak povolit serializaci při odvození třídy z CObject, naleznete v článcích Soubory v MFC a Serializace.

Viz také

Odvození třídy z objektu CObject