Поделиться через


CRuntimeClass::IsDerivedFrom

Эта функция вызывается, чтобы определить, вызывающей класс является производным от класса, заданного в параметре pBaseClass .

BOOL IsDerivedFrom(
   const CRuntimeClass* pBaseClass 
) const;

Параметры

  • pBaseClass
    Знакомое имя класса, производного от CObject.

Возвращаемое значение

TRUE если вызывающий IsDerivedFrom класс является производным от базового класса, структуры CRuntimeClass которого задается в качестве параметра; в противном случае FALSE.

Заметки

Связь определяется "прохода по" из класса элемента по цепочке производных классов все в верхней части.Эта функция возвращает только FALSE если совпадение не найдено для базового класса.

ПримечаниеПримечание

Для использования структуры CRuntimeClass, необходимо включить IMPLEMENT_DYNAMIC, IMPLEMENT_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();

Требования

Header: afx.h

См. также

Ссылки

Структура CRuntimeClass

Диаграмма иерархии