CRuntimeClass::IsDerivedFrom
Chiamare questa funzione per determinare se la classe chiamante è derivata dalla classe specificata nel parametro di pBaseClass .
BOOL IsDerivedFrom(
const CRuntimeClass* pBaseClass
) const;
Parametri
- pBaseClass
Il nome comune di una classe derivata da CObject.
Valore restituito
TRUE se la classe che chiama IsDerivedFrom è derivata dalla classe base della cui struttura CRuntimeClass viene fornita come parametro, in caso contrario FALSE.
Note
La relazione viene determinata "scorrendo" dalla classe del membro nella catena delle classi derivate da una modalità all'inizio. Questa funzione restituisce solo FALSE se non viene rilevata alcuna corrispondenza della classe base.
Nota
Per utilizzare la struttura CRuntimeClass, è necessario includere IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, macro o IMPLEMENT_SERIALimplementazione della classe per il quale si desidera recuperare le informazioni di runtime dell'oggetto.
Per ulteriori informazioni su l CRuntimeClass, vedere l'articolo classe di CObject: Accedere a informazioni sulla classe di runtime.
Esempio
// 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();
Requisiti
Header: afx.h