共用方式為


CRuntimeClass::IsDerivedFrom

呼叫此函式以判斷呼叫的類別是否會在 pBaseClass 參數所指定的類別衍生。

BOOL IsDerivedFrom( 
   const CRuntimeClass* pBaseClass  
) const;

參數

  • pBaseClass
    CObject衍生的類別中熟悉的名稱。

傳回值

,如果呼叫 IsDerivedFrom 的衍生類別 CRuntimeClass 結構會提供做為參數的基底類別衍生,否則

備註

關聯性取決於「中一路向上查核」從衍生類別中的成員之類別的最上方。 如果符合沒有基底類別中找到,則這個函式只會傳回

注意事項注意事項

若要使用 CRuntimeClass 結構,在您要擷取的執行階段物件資訊的類別的實作必須包含 IMPLEMENT_DYNAMICIMPLEMENT_DYNCREATEIMPLEMENT_SERIAL 巨集。

如需使用 CRuntimeClass的詳細資訊,請參閱本文 CObject 類別:存取的執行階段類別資訊

範例

// 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();

需求

Header: afx.h

請參閱

參考

CRuntimeClass 結構

階層架構圖表