CRuntimeClass::IsDerivedFrom
Chamar esta função para determinar se a telefonar classe é derivada da classe especificada no pBaseClass parâmetro.
BOOL IsDerivedFrom(
const CRuntimeClass* pBaseClass
) const;
Parâmetros
- pBaseClass
O nome familiar de uma classe derivada de CObject.
Valor de retorno
TRUE se a classe chamada IsDerivedFrom é derivado da base de classe cuja CRuntimeClass estrutura é fornecido sistema autônomo um parâmetro; caso contrário FALSE.
Comentários
O Relação é determinado pelo "walking" da classe do membro a cadeia de classes derivadas até a parte superior.Esta função retorna apenas FALSE se nenhuma correspondência for encontrada para a classe base.
Observação: |
---|
Para usar o CRuntimeClass estrutura, você deve incluir o IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, ou IMPLEMENT_SERIAL macro na implementação da classe para o qual você deseja recuperar informações do objeto em time de execução. |
Para obter mais informações sobre como usar CRuntimeClass, consulte o artigo Classe CObject: Acessando informações de classe em tempo de execução.
Exemplo
// 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();
Requisitos
Cabeçalho: afx.h