Compartilhar via


Especificar níveis de funcionalidade

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

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

  • Suporte a criação dinâmica

  • Suporte de serialização

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

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

  1. Derivar a classe de CObject, conforme descrito na derivando uma classe de CObject artigo.

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

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

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    
ObservaçãoObservação

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

Para adicionar suporte a criação dinâmica

  1. Derivar a classe de CObject.

  2. Use o DECLARE_DYNCREATE macro na declaração da classe.

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

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

Para adicionar suporte de serialização

  1. Derivar a classe de CObject.

  2. Substituir o Serialize função de membro.

    ObservaçãoObservação

    Se você chamar Serialize diretamente, ou seja, você não deseja serializar o objeto através de um ponteiro polimórfico, omitir as etapas 3 a 5.

  3. Use o DECLARE_SERIAL macro na declaração da classe.

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

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

ObservaçãoObservação

"Ponteiro polimórfico" aponta para um objeto de uma classe (chame-A) ou a um objeto de qualquer classe derivada de um (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 ele é serializar (B), pois pode ser um objeto de qualquer classe derivada de uma classe base (A).

Para obter mais detalhes sobre como ativar serialização, quando você deriva a classe de CObject, consulte os artigos arquivos no MFC e serialização.

Consulte também

Conceitos

Derivando uma classe de CObject