Condividi tramite


Cast di tipo degli oggetti classe MFC

Le macro di cast dei tipi consentono di eseguire il cast di un puntatore specifico a un puntatore che punta a un oggetto di una classe specifica, con o senza verificare che il cast sia valido.

Nella tabella seguente sono elencate le macro di cast dei tipi MFC.

Macro che esegue il cast dei puntatori a oggetti classe MFC

Nome Descrizione
DYNAMIC_DOWNCAST Esegue il cast di un puntatore a un puntatore a un oggetto classe durante il controllo per verificare se il cast è valido.
STATIC_DOWNCAST Esegue il cast di un puntatore a un oggetto da una classe a un puntatore di un tipo correlato. In una compilazione di debug, genera un as edizione Standard RT se l'oggetto non è un tipo di destinazione.

DYNAMIC_DOWNCAST

Fornisce un modo pratico per eseguire il cast di un puntatore a un puntatore a un oggetto classe durante il controllo per verificare se il cast è valido.

DYNAMIC_DOWNCAST(class, pointer)

Parametri

class
Nome di una classe.

pointer
Puntatore di cui eseguire il cast a un puntatore a un oggetto di classe di tipo.

Osservazioni:

La macro eseguirà il cast del parametro puntatore a un puntatore a un oggetto del tipo del parametro di classe.

Se l'oggetto a cui fa riferimento il puntatore è un "tipo" della classe identificata, la macro restituisce il puntatore appropriato. Se non è un cast legale, la macro restituisce NULL.

STATIC_DOWNCAST

Esegue il cast di pobject a un puntatore a un oggetto class_name .

STATIC_DOWNCAST(class_name, pobject)

Parametri

Class_name
Nome della classe a cui viene eseguito il cast.

pobject
Puntatore di cui eseguire il cast a un puntatore a un oggetto class_name .

Osservazioni:

pobject deve essere NULL o puntare a un oggetto di una classe derivata direttamente, o indirettamente, da class_name. Nelle compilazioni dell'applicazione con il simbolo del preprocessore _DEBUG definito, la macro sarà AS edizione Standard RT se pobject non è NULL o se punta a un oggetto che non è un "tipo" della classe specificata nel parametro class_name (vedere CObject::IsKindOf). Nelle compilazioni non _DEBUG la macro esegue il cast senza alcun controllo dei tipi.

La classe specificata nel parametro class_name deve essere derivata da CObject e deve usare le DECLARE_DYNAMIC e le IMPLEMENT_DYNAMIC, il DECLARE_DYNCREATE e il IMPLEMENT_DYNCREATE oppure le macro DECLARE_edizione Standard RIAL e IMPLEMENT_edizione Standard RIAL come illustrato nell'articolo Classe CObject: Derivazione di una classe da CObject.

Ad esempio, è possibile eseguire il cast di un puntatore a CMyDoc, denominato pMyDoc, a un puntatore all'uso CDocument di questa espressione:

CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);

Se pMyDoc non punta a un oggetto derivato direttamente o indirettamente da CDocument, la macro sarà AS edizione Standard RT.

Vedi anche

Macro e globali