Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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, determina un'istruzione ASSERT 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 asserterà 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_SERIAL e IMPLEMENT_SERIAL 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 eseguirà ASSERT.