Compartilhar via


Especificando níveis de funcionalidade

Este artigo descreve como adicionar os seguintes níveis de funcionalidade à classe derivada de CObject:

  • Informações da classe runtime

  • Suporte à criação dinâmica

  • Suporte à serialização

Para obter uma descrição geral da funcionalidade CObject, consulte o artigo Derivando uma classe do CObject.

Para adicionar informações da classe runtime

  1. Derive sua classe de CObject, conforme descrito no artigo Derivando uma classe do artigo CObject.

  2. Use a macro DECLARE_DYNAMIC na declaração de classe, conforme mostrado aqui:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Use a macro IMPLEMENT_DYNAMIC no arquivo de implementação (. CPP) da sua classe. Essa macro usa como argumentos o nome da classe e sua classe base, da seguinte maneira:

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Observação

Sempre coloque IMPLEMENT_DYNAMIC no arquivo de implementação (. CPP) para sua classe. A macro IMPLEMENT_DYNAMIC deve ser avaliada apenas uma vez durante uma compilação e, portanto, não deve ser usada em um arquivo de interface (. H) que poderia potencialmente ser incluído em mais de um arquivo.

Para adicionar suporte à criação dinâmica

  1. Derive sua classe de CObject.

  2. Use a macro DECLARE_DYNCREATE na declaração de classe.

  3. Defina um construtor sem argumentos (um construtor padrão).

  4. Use a macro IMPLEMENT_DYNCREATE no arquivo de implementação de classe.

Para adicionar suporte à serialização

  1. Derive sua classe de CObject.

  2. Substitua a função de membro Serialize.

    Observação

    Se você chamar Serialize diretamente, ou seja, não deseja serializar o objeto por meio de um ponteiro polimórfico, omita as etapas de 3 a 5.

  3. Usar a macro DECLARE_SERIAL na declaração de classe.

  4. Defina um construtor sem argumentos (um construtor padrão).

  5. Usar a macro IMPLEMENT_SERIAL no arquivo de implementação.

Observação

Um "ponteiro polimórfico" aponta para um objeto de uma classe (chame-o de A) ou para um objeto de qualquer classe derivada de A (digamos, B). Para serializar por meio de um ponteiro polimórfico, a estrutura deve determinar a classe de runtime do objeto que está serializando (B), pois pode ser um objeto de qualquer classe derivada de alguma classe base (A).

Para obter mais detalhes sobre como habilitar a serialização quando você derivar sua classe CObject, consulte os artigos Arquivos no MFC e serialização.

Confira também

Derivando uma classe de CObject