CRuntimeClass::IsDerivedFrom
Appelez cette fonction pour déterminer si la classe appelante est dérivée de la classe spécifiée dans le paramètre de pBaseClass .
BOOL IsDerivedFrom(
const CRuntimeClass* pBaseClass
) const;
Paramètres
- pBaseClass
Le nom connu d'une classe dérivée d' CObject.
Valeur de retour
TRUE si la classe appelant IsDerivedFrom est dérivée de la classe de base dont la structure d' CRuntimeClass est spécifiée comme paramètre ; sinon FALSE.
Notes
La relation est déterminée « en » marchant de la classe du membre en haut de la chaîne des classes dérivées complètement en haut.Cette fonction retourne uniquement FALSE si aucune correspondance n'est trouvée pour la classe de base.
[!REMARQUE]
Pour utiliser la structure d' CRuntimeClass , vous devez inclure IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, la macro ou d' IMPLEMENT_SERIAL dans l'implémentation de la classe pour laquelle vous souhaitez récupérer des informations sur l'objet à l'exécution.
Pour plus d'informations sur l'utilisation CRuntimeClass, consultez l'article classe de CObject : Les informations sur la classe à l'exécution d'accès.
Exemple
// This example creates an object from the run-time class. It only
// creates objects derived from CWnd.
// We only want to create an object derived from CWnd.
if (!pClass->IsDerivedFrom(RUNTIME_CLASS(CWnd)))
{
TRACE(_T("Error; Object %s is not derived from CWnd\n"),
pClass->m_lpszClassName);
return FALSE;
}
// Get a pointer to the base class CRuntimeClass.
#ifdef _AFXDLL
CRuntimeClass* pBaseClass = pClass->m_pfnGetBaseClass();
#else
CRuntimeClass* pBaseClass = pClass->m_pBaseClass;
#endif
ASSERT(pBaseClass != NULL);
TRACE("Creating object %s derived from %s, with object size %d "
"and schema %d\n", pClass->m_lpszClassName,
pBaseClass->m_lpszClassName, pClass->m_nObjectSize,
pClass->m_wSchema);
// Create the object.
CObject* pObject = pClass->CreateObject();
Configuration requise
Header: afx.h