Partilhar via


Casting de Tipos dos Objetos de Classe MFC

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Os macros de casting de tipos fornecem uma forma de lançar um dado ponteiro para um ponteiro que aponta para um objeto de classe específica, com ou sem verificação de que o lançamento é legal.

A tabela seguinte lista os macros de casting do tipo MFC.

Macros que lançam apontadores para objetos de classe MFC

Nome Description
DYNAMIC_DOWNCAST Lança um ponteiro para um apontador para um objeto de classe enquanto verifica se o lançamento é legal.
STATIC_DOWNCAST Conjura um ponteiro para um objeto de uma classe para um ponteiro de um tipo relacionado. Numa build de depuração, causa um ASSERT se o objeto não for um "tipo de" o tipo alvo.

DYNAMIC_DOWNCAST

Fornece uma forma prática de lançar um ponteiro para um apontador para um objeto de classe enquanto se verifica se o lançamento é legal.

DYNAMIC_DOWNCAST(class, pointer)

Parâmetros

classe
O nome de uma turma.

Ponteiro
Um ponteiro para ser lançado para um apontador para um objeto de classe de tipo.

Observações

A macro irá lançar o parâmetro de ponteiro para um ponteiro para um objeto do tipo do parâmetro de classe .

Se o objeto referenciado pelo ponteiro for uma "espécie de" classe identificada, o macro devolve o ponteiro apropriado. Se não for um cast legal, a macro devolve NULL.

STATIC_DOWNCAST

Lança pobject para um apontador para um objeto class_name .

STATIC_DOWNCAST(class_name, pobject)

Parâmetros

class_name
O nome da turma a que está a ser lançada.

pobject
O ponteiro a ser lançado para um apontador para um objeto class_name .

Observações

pobject deve ser NULL, ou apontar para um objeto de uma classe que seja derivado direta ou indiretamente, de class_name. Em builds da sua aplicação com o símbolo de pré-processador _DEBUG definido, a macro irá ASSERTER se o pobjeto não for NULL, ou se apontar para um objeto que não seja um "tipo de" classe especificada no parâmetro class_name (ver CObject::IsKindOf). Em builds não- _DEBUG , a macro executa o cast sem qualquer verificação de tipos.

A classe especificada no parâmetro class_name deve ser derivada e CObject deve usar os macros DECLARE_DYNAMIC e IMPLEMENT_DYNAMIC, DECLARE_DYNCREATE e IMPLEMENT_DYNCREATE, ou os macros DECLARE_SERIAL e IMPLEMENT_SERIAL conforme explicado no artigo Classe CObject: Derivar uma Classe a partir do CObject.

Por exemplo, pode lançar um ponteiro para CMyDoc, chamado pMyDoc, para um ponteiro para CDocument usar 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 irá AFIRMAR.

Consulte também

Macros e Globais