Cast de type des objets de classe MFC

Les macros de cast de type permettent de convertir un pointeur donné vers un pointeur qui pointe vers un objet de classe spécifique, avec ou sans vérifier que le cast est légal.

Le tableau suivant répertorie les macros de cast de type MFC.

Macros qui castent des pointeurs vers des objets de classe MFC

Nom Description
DYNAMIC_DOWNCAST Convertit un pointeur vers un pointeur vers un objet de classe tout en vérifiant si le cast est légal.
STATIC_DOWNCAST Convertit un pointeur vers un objet d’une classe vers un pointeur d’un type associé. Dans une build de débogage, provoque une ASSERTION si l’objet n’est pas un type de type cible.

DYNAMIC_DOWNCAST

Fournit un moyen pratique de convertir un pointeur vers un pointeur vers un objet de classe tout en vérifiant si le cast est légal.

DYNAMIC_DOWNCAST(class, pointer)

Paramètres

class
Nom d’une classe.

pointer
Pointeur à convertir en pointeur vers un objet de classe de type.

Notes

La macro convertit le paramètre de pointeur en pointeur vers un objet du type du paramètre de classe .

Si l’objet référencé par le pointeur est un « type de » la classe identifiée, la macro retourne le pointeur approprié. S’il n’est pas un cast légal, la macro retourne NULL.

STATIC_DOWNCAST

Convertit pobject en pointeur vers un objet class_name.

STATIC_DOWNCAST(class_name, pobject)

Paramètres

class_name
Nom de la classe en cours de conversion.

pobject
Pointeur à convertir en pointeur vers un objet class_name .

Notes

pobject doit être NULL ou pointer vers un objet d’une classe dérivée directement ou indirectement de class_name. Dans les builds de votre application avec le symbole de préprocesseur _DEBUG défini, la macro déclare si pobject n’est pas NULL, ou si elle pointe vers un objet qui n’est pas un « type de » la classe spécifiée dans le paramètre class_name (voir CObject ::IsKindOf). Dans les builds non _DEBUG , la macro effectue le cast sans vérification de type.

La classe spécifiée dans le paramètre class_name doit être dérivée CObject et doit utiliser les DECLARE_DYNAMIC et les IMPLEMENT_DYNAMIC, les DECLARE_DYNCREATE et les IMPLEMENT_DYNCREATE, ou les macros DECLARE_SERIAL et IMPLEMENT_SERIAL, comme expliqué dans l’article CObject, classe : dérivation d’une classe à partir de CObject.

Par exemple, vous pouvez convertir un pointeur vers CMyDoc, appelé pMyDoc, vers un pointeur vers lequel CDocument utiliser cette expression :

CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);

Si pMyDoc elle ne pointe pas vers un objet dérivé directement ou indirectement de CDocument, la macro s’affirme.

Voir aussi

Macros et globals