Personalização de despejo do objeto
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
Quando você derivar uma classe de CObject, você pode substituir o Dump a função de membro para fornecer informações adicionais quando você usa DumpAllObjectsSince a objetos de despejo para o a janela de saída.
O Dump função grava uma representação textual de um membro do objeto variáveis a um contexto de despejo (CDumpContext). O contexto de despejo é semelhante a um fluxo de i/O. Você pode usar o operador de acréscimo (<<) para enviar dados para um CDumpContext.
Quando você substituir o Dump função, primeiro você deve chamar a versão da classe base Dump para despejar o conteúdo do objeto de classe base. Em seguida, saída de uma descrição textual e o valor para cada variável de membro de sua classe derivada.
A declaração da Dump função tem esta aparência:
class CPerson : public CObject
{
public:
#ifdef _DEBUG
virtual void Dump( CDumpContext& dc ) const;
#endif
CString m_firstName;
CString m_lastName;
// And so on...
};
Porque o objeto despejando só faz sentido quando você está depurando o seu programa, a declaração da Dump função é bracketed com um _ de # ifdef Debug / # endif bloco.
No exemplo a seguir, o Dump primeira chamadas de função do Dump a função para a sua classe de base. Em seguida, grava uma breve descrição de cada variável de membro com o valor do membro para o fluxo de diagnóstico.
#ifdef _DEBUG
void CPerson::Dump( CDumpContext& dc ) const
{
// Call the base class function first.
CObject::Dump( dc );
// Now do the stuff for our specific class.
dc << "last name: " << m_lastName << "\n"
<< "first name: " << m_firstName << "\n";
}
#endif
Você deve fornecer um CDumpContext argumento para especificar onde a saída de despejo será ir. A versão de depuração do MFC fornece um predefinido CDumpContext objeto chamado afxDump que envia a saída do depurador.
CPerson* pMyPerson = new CPerson;
// Set some fields of the CPerson object.
//...
// Now dump the contents.
#ifdef _DEBUG
pMyPerson->Dump( afxDump );
#endif