Partilhar via


Especificando níveis de funcionalidade

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

  • Informações de classe em tempo de execução

  • Suporte à criação dinâmica

  • Suporte à serialização

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

Para adicionar informações de classe durante o tempo de execução

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

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

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Utilize a macro IMPLEMENT_DYNAMIC no ficheiro 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 a sua turma. 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 poderiam potencialmente ser incluídos 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. Utilize a macro IMPLEMENT_DYNCREATE no ficheiro de implementação de classe.

Para adicionar suporte à serialização

  1. Derive sua classe de CObject.

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

    Observação

    Se você chamar Serialize diretamente, ou seja, não quiser serializar o objeto por meio de um ponteiro polimórfico, omita as etapas 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 através de um ponteiro polimórfico, a estrutura deve determinar a classe de tempo de execução do objeto que está serializando (B), uma vez que 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ê deriva sua classe do CObject, consulte os artigos Arquivos em MFC e Serialização.

Ver também

Derivando uma classe de CObject