Especificar níveis de funcionalidade
Este artigo descreve como adicionar os seguintes níveis de funcionalidade a seu CObject-classe derivada:
em time de execução informações de classe
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 time de execução
Derivar o clsistema autônomos CObject, sistema autônomo descrito o Derivando uma Clsistema autônomos de CObject artigo.
Use o DECLARE_DYNAMIC macro na sua declaração de classe, conforme mostrado aqui:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Use o IMPLEMENT_DYNAMIC macro no arquivo de implementação (.CPP) da sua classe. Essa macro usa sistema autônomo argumentos o nome da classe e sua classe base, da seguinte maneira:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Observação: |
---|
Sempre coloque IMPLEMENT_DYNAMIC na implementação de arquivo (.CPP) para sua classe. The 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 pode ser incluído em mais de um arquivo. |
Para adicionar suporte a criação dinâmica
Derivar a classe de CObject.
Use o DECLARE_DYNCREATE macro na declaração da classe.
Defina um construtor sem argumentos (um construtor padrão).
Use o IMPLEMENT_DYNCREATE macro no arquivo de implementação da classe.
Para adicionar suporte a serialização
Derivar a classe de CObject.
Substituir o Serialize função de membro.
Observação: Se você chamar Serialize diretamente, ou seja, você não quiser serializar o objeto através de um ponteiro polimórfico, omita etapas 3 a 5.
Use o DECLARE_SERIAL macro na declaração da classe.
Defina um construtor sem argumentos (um construtor padrão).
Use o IMPLEMENT_SERIAL macro no arquivo de implementação da classe.
Observação: |
---|
Um "ponteiro polimórfico" aponta para um objeto de uma classe (chamá-lo 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 ti de execução me classe do objeto ele é serializar (B), como ele pode ser um objeto de qualquer classe derivada de alguma classe básica (A). |
Para obter mais detalhes sobre como ativar serialização, quando você deriva a classe de CObject, consulte os artigos Arquivos no MFC and Serialização.