Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.
As macros de conversão de tipos fornecem uma modo de converter um determinado ponteiro em um ponteiro que aponta para um objeto de classe específica, verificando ou não se a conversão é legal.
A tabela a seguir lista as macros de conversão de tipo MFC.
Macros que convertem ponteiros em objetos de classe MFC
| Nome | Descrição |
|---|---|
| DYNAMIC_DOWNCAST | Converte um ponteiro em um ponteiro para um objeto de classe enquanto verifica se a conversão é legal. |
| STATIC_DOWNCAST | Converte um ponteiro em um objeto de uma classe para um ponteiro de um tipo relacionado. Em um build de depuração, causará um ASSERT se o objeto não for um "tipo" do tipo de destino. |
DYNAMIC_DOWNCAST
Oferece um modo útil de converter um ponteiro em um ponteiro para um objeto de classe enquanto verifica se a conversão é legal.
DYNAMIC_DOWNCAST(class, pointer)
Parâmetros
class
O nome de uma classe.
pointer
Um ponteiro a ser convertido em um ponteiro para um objeto do tipo classe.
Comentários
A macro converterá o parâmetro pointer em um ponteiro para um objeto do tipo do parâmetro class.
Se o objeto referenciado pelo ponteiro for um "tipo" da classe identificada, a macro retornará o ponteiro apropriado. Se não for uma conversão legal, a macro retornará NULL.
STATIC_DOWNCAST
Converte pobject em um ponteiro para um objeto class_name.
STATIC_DOWNCAST(class_name, pobject)
Parâmetros
class_name
O nome da classe para a qual está sendo feita a conversão.
pobject
O ponteiro a ser convertido em um ponteiro para um objeto class_name.
Comentários
pobject deve ser NULL ou apontar para um objeto de uma classe derivada diretamente ou indiretamente de class_name. Em builds do aplicativo com o símbolo de pré-processador _DEBUG definido, a macro fará ASSERT se pobject não for NULL ou se apontar para um objeto que não seja um "tipo" da classe especificada no parâmetro class_name (confira CObject::IsKindOf). Em builds não _DEBUG, a macro executa a conversão sem nenhuma verificação de tipo.
A classe especificada no parâmetro class_name deve ser derivada de CObject e usar DECLARE_DYNAMIC e IMPLEMENT_DYNAMIC, DECLARE_DYNCREATE e IMPLEMENT_DYNCREATE ou as macros DECLARE_SERIAL e IMPLEMENT_SERIAL, conforme explicado no artigo Classe CObject: Como derivar uma classe de CObject.
Por exemplo, você pode converter um ponteiro para CMyDoc, chamado pMyDoc, em um ponteiro para CDocument usando esta expressão:
CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);
Se pMyDoc não apontar para um objeto derivado direta ou indiretamente de CDocument, a macro será ASSERT.