CRuntimeClass::IsDerivedFrom
Wywołanie tej funkcji, jeśli wywołujący klasa pochodzi od klasy określonej w pBaseClass parametru.
BOOL IsDerivedFrom(
const CRuntimeClass* pBaseClass
) const;
Parametry
- pBaseClass
Przyjaznej nazwy klasy pochodne CObject.
Wartość zwracana
TRUE Jeśli wywołujący klasy IsDerivedFrom pochodzi z podstawy klasy, których CRuntimeClass struktury jest podany jako parametr; w przeciwnym razie FALSE.
Uwagi
Relacja jest określana przez "walking" członka klasy łańcucha klas pochodnych do góry.Funkcja ta zwraca tylko FALSE , jeśli nie znaleziono klasy podstawowej.
[!UWAGA]
Aby użyć CRuntimeClass struktury, musi zawierać IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, lub IMPLEMENT_SERIAL makro w implementacji klasy, dla której chcesz pobrać informacje o obiekcie run-time.
Aby uzyskać więcej informacji na temat używania CRuntimeClass, zobacz artykuł CObject, klasa: dostęp do informacji klasy Run-Time.
Przykład
// 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();
Wymagania
Nagłówek: afx.h