次の方法で共有


CRuntimeClass::IsDerivedFrom

呼び出し元のクラスが pBaseClass の パラメーターで指定されたクラスから派生したかどうかを判定するためにこの関数を呼び出します。

BOOL IsDerivedFrom(
   const CRuntimeClass* pBaseClass 
) const;

パラメーター

  • pBaseClass
    CObject から派生したクラスの既知の名前。

戻り値

IsDerivedFrom を呼び出すクラスが CRuntimeClass の構造体をパラメーターとして指定した基本クラスから派生**[真]** ; それ FALSE

解説

上との関係は、派生クラスでチェーンの上位のメンバーのクラスから、「実行中」決まります。この関数は、一致が基本クラスにない場合にのみ FALSE を返します。

[!メモ]

CRuntimeClass の構造を使用するには、ランタイム オブジェクトの情報を取得するクラスの実装に IMPLEMENT_DYNAMICIMPLEMENT_DYNCREATE、または IMPLEMENT_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();

必要条件

ヘッダー : afx.h

参照

関連項目

CRuntimeClass 構造体

階層図