CRuntimeClass::IsDerivedFrom
Rufen Sie diese Funktion, um zu bestimmen, ob die aufrufende Klasse von der Klasse abgeleitet ist, die im pBaseClass -Parameter angegeben wird.
BOOL IsDerivedFrom(
const CRuntimeClass* pBaseClass
) const;
Parameter
- pBaseClass
Der bekannte Name einer Klasse wird von abgeleitet CObject.
Rückgabewert
TRUE, wenn die Klasse, die IsDerivedFrom aufruft, von der Basisklasse abgeleitet wird, deren CRuntimeClass-Struktur als Parameter angegeben wird; andernfalls FALSE.
Hinweise
Die Beziehung wird ermittelt, indem der "bis" von der Klasse des Members die Kette der abgeleiteten Klassen zum Anfang durchläuft.Diese Funktion gibt nur FALSE zurück, wenn keine Übereinstimmung für die Basisklasse gefunden wird.
Hinweis |
---|
Um die CRuntimeClass-Struktur zu verwenden, müssen Sie IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE oder IMPLEMENT_SERIAL-Makro in der Implementierung der Klasse enthalten die für Sie Ablaufobjektinformationen abrufen möchten. |
Weitere Informationen zur Verwendung von CRuntimeClass, finden Sie im Artikel CObject-Klasse: Zugreifen auf Ablaufklasseninformationen.
Beispiel
// 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();
Anforderungen
Header: afx.h