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 CObject funcionalidade, consulte o artigo Derivando uma classe do CObject.

Para adicionar informações da classe runtime

  1. Derivar sua classe de CObject, conforme descrito no artigo Derivando uma Classe do 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 argumento 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 da 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. Use a macro DECLARE_SERIAL na declaração de classe.

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

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

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 tempo de execução 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 ao derivar sua classe de CObject, consulte os artigos Arquivos em MFC e Serialização.

Consulte também

Derivando uma classe de CObject