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
Derivar a classe de CObject, conforme descrito na derivando uma classe 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) de sua classe.Essa macro usa como argumentos o nome da classe e sua classe base, como segue:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Observaçã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
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 de 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 deseja serializar o objeto através de um ponteiro polimórfico, omitir as 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 |
---|
"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.