Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.