Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Cada classe derivada de CObject está associada a uma CRuntimeClass estrutura que pode usar para obter informação sobre um objeto ou a sua classe base em tempo de execução.
Sintaxe
struct CRuntimeClass
Membros
Métodos Públicos
| Nome | Description |
|---|---|
| CRuntimeClass::CreateObject | Cria um objeto durante a execução. |
| CRuntimeClass::FromName | Cria um objeto durante a execução usando o nome familiar da classe. |
| CRuntimeClass::IsDerivedFrom | Determina se a classe é derivada da classe especificada. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CRuntimeClass::m_lpszClassName | O nome da classe. |
| CRuntimeClass::m_nObjectSize | O tamanho do objeto em bytes. |
| CRuntimeClass::m_pBaseClass | Um apontador para a CRuntimeClass estrutura da classe base. |
| CRuntimeClass::m_pfnCreateObject | Um apontador para a função que cria dinamicamente o objeto. |
| CRuntimeClass::m_pfnGetBaseClass | Devolve a CRuntimeClass estrutura (disponível apenas quando ligada dinamicamente). |
| CRuntimeClass::m_wSchema | O número do esquema da turma. |
Observações
CRuntimeClass é uma estrutura e, portanto, não tem uma classe base.
A capacidade de determinar a classe de um objeto em tempo de execução é útil quando é necessária uma verificação extra de tipos dos argumentos da função, ou quando é necessário escrever código de propósito especial baseado na classe de um objeto. A informação de classe em tempo de execução não é suportada diretamente pela linguagem C++.
CRuntimeClass fornece informação sobre o objeto C++ relacionado, como um ponteiro para o CRuntimeClass da classe base e o nome da classe ASCII da classe relacionada. Esta estrutura também implementa várias funções que podem ser usadas para criar objetos dinamicamente, especificando o tipo de objeto usando um nome familiar e determinando se a classe relacionada deriva de uma classe específica.
Para mais informações sobre a utilização CRuntimeClassde , consulte o artigo Acesso à Informação Run-Time Classe.
Hierarquia de herança
CRuntimeClass
Requerimentos
Cabeçalho: afx.h
CRuntimeClass::CreateObject
Chame esta função para criar dinamicamente a classe especificada durante a execução.
CObject* CreateObject();
static CObject* PASCAL CreateObject(LPCSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);
Parâmetros
lpszClassName
O nome familiar da classe a ser criada.
Valor de retorno
Um ponteiro para o objeto recém-criado, ou NULL se o nome da classe não for encontrado ou se não houver memória suficiente para criar o objeto.
Observações
As classes derivadas de CObject podem suportar a criação dinâmica, que é a capacidade de criar um objeto de uma classe especificada em tempo de execução. As classes de documento, vista e frame, por exemplo, devem suportar a criação dinâmica. Para mais informações sobre criação dinâmica e o CreateObject membro, veja Classe CObject e Classe CObject: Especificar Níveis de Funcionalidade.
Example
Veja o exemplo de IsDerivedFrom.
CRuntimeClass::FromName
Chame esta função para recuperar a CRuntimeClass estrutura associada ao nome familiar.
static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);
static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);
Parâmetros
lpszClassName
O nome familiar de uma classe deriva de CObject.
Valor de retorno
Um ponteiro para um CRuntimeClass objeto, correspondente ao nome passado em lpszClassName. A função devolve NULL se não for encontrado nenhum nome de classe correspondente.
Example
// This example creates an object if CAge is defined.
CRuntimeClass* pClass = CRuntimeClass::FromName(_T("CAge"));
if (pClass == NULL)
{
// not found, display a warning for diagnostic purposes
AfxMessageBox(_T("Warning: CMyClass not defined"));
return NULL;
}
// attempt to create the object with the found CRuntimeClass
CObject* pObject = pClass->CreateObject();
CRuntimeClass::IsDerivedFrom
Chame esta função para determinar se a classe que chama é derivada da classe especificada no parâmetro pBaseClass .
BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
Parâmetros
pBaseClass
O nome familiar de uma classe deriva de CObject.
Valor de retorno
TRUE se a chamada IsDerivedFrom da classe for derivada da classe base cuja CRuntimeClass estrutura é dada como parâmetro; caso contrário FALSE.
Observações
A relação é determinada por "caminhar" desde a classe do membro ao longo da cadeia de classes derivadas até ao topo. Esta função só devolve FALSE se não for encontrada correspondência para a classe base.
Observação
Para usar a CRuntimeClass estrutura, deve incluir a macro IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE ou IMPLEMENT_SERIAL na implementação da classe para a qual pretende obter informação de objetos em tempo de execução.
Para mais informações sobre a utilização CRuntimeClassde , veja o artigo Classe CObject: Acesso à Informação Run-Time Classe.
Example
// 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();
CRuntimeClass::m_lpszClassName
Uma cadeia terminada por nulo contendo o nome da classe ASCII.
Observações
Este nome pode ser usado para criar uma instância da classe usando a FromName função membro.
Example
Veja o exemplo de IsDerivedFrom.
CRuntimeClass::m_nObjectSize
O tamanho do objeto, em bytes.
Observações
Se o objeto tiver membros de dados que apontam para a memória alocada, o tamanho dessa memória não é incluído.
Example
Veja o exemplo de IsDerivedFrom.
CRuntimeClass::m_pBaseClass
Se a sua aplicação se ligar estaticamente ao MFC, este membro de dados contém um ponteiro para a CRuntimeClass estrutura da classe base.
Observações
Se a sua aplicação se liga dinamicamente à biblioteca MFC, veja m_pfnGetBaseClass.
Example
Veja o exemplo de IsDerivedFrom.
CRuntimeClass::m_pfnCreateObject
Um apontador de função para o construtor padrão que cria um objeto da sua classe.
Observações
Este ponteiro só é válido se a classe suportar a criação dinâmica; caso contrário, a função devolve NULL.
CRuntimeClass::m_pfnGetBaseClass
Se a sua aplicação usar a biblioteca MFC como uma DLL partilhada, este membro de dados aponta para uma função que devolve a CRuntimeClass estrutura da classe base.
Observações
Se a sua candidatura está ligada estaticamente à biblioteca MFC, veja m_pBaseClass.
Example
Veja o exemplo de IsDerivedFrom.
CRuntimeClass::m_wSchema
O número do esquema (-1 para classes não serializáveis).
Observações
Para mais informações sobre números de esquema, consulte a macro IMPLEMENT_SERIAL .
Example
Veja o exemplo de IsDerivedFrom.
Consulte também
Gráfico de Hierarquia
CObject::GetRuntimeClass
CObject::IsMeio Que
RUNTIME_CLASS
IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE
IMPLEMENT_SERIAL