CRuntimeClass non dispone di una classe base.
Ogni classe derivata da CObject č associato con una struttura di CRuntimeClass che č possibile utilizzare per ottenere informazioni su un oggetto o la classe di base in fase di esecuzione. La capacitą di determinare la classe di un oggetto in fase di esecuzione č utile quando č necessario controllare gli argomenti della funzione di tipo extra, o quando č necessario scrivere codice specifico basato sulla classe di un oggetto. Informazioni sulla classe in fase di esecuzione non č supportati direttamente dal linguaggio C++.
La struttura dispone dei membri seguenti:
LPCSTR m_lpszClassName
Una stringa con terminazione null contenente il nome della classe ASCII.
int m_nObjectSize
Le dimensioni dell'oggetto, in byte. Se l'oggetto ha membri dati che puntano a memoria allocata, le dimensioni di quella memoria non viene inclusa.
UINT m_wSchema
Il numero di schemi (-1 per le classi serializzabili). Vedere la macro IMPLEMENT_SERIAL per una descrizione del numero dello schema.
CObject * (PASCAL m_pfnCreateObject))
Un puntatore a funzione al costruttore predefinito che crea un oggetto della classe (valido solo se la classe supporta la creazione dinamica; in caso contrario, restituisce NULL).
CRuntimeClass * (PASCAL m_pfn_GetBaseClass))
Se l'applicazione č collegata in modo dinamico alla versione di MFC AFXDLL, un puntatore a una funzione che restituisce la struttura CRuntimeClass della classe base.
CRuntimeClass * m_pBaseClass
Se l'applicazione č collegata in modo statico a MFC, un puntatore alla struttura CRuntimeClass della classe base.
Fu&nzionalitą solo in Professional ed Enterprise edizioninbsp; Collegamento statico a MFC č supportato solo in Visual C++ Professional ed Enterprise edizioni. Per ulteriori informazioni, vedere Edizioni di Visual C++.
CObject * CreateObject);
Le classi derivate da CObject possono supportare la creazione dinamica, che č la capacitą di creare un oggetto di una classe specificata in fase di esecuzione. Documento, visualizzazione e classi di telaio, ad esempio, dovrebbero sostenere la creazione dinamica. La funzione membro CreateObject consente di implementare questa funzione e creare oggetti per queste classi durante la fase di esecuzione. Per ulteriori informazioni sulla creazione dinamica e il membro CreateObject , vedere CObject classe argomenti e classe CObject: specificare i livelli di funzionalitą nel manuale del programmatore di Visual C++.
BOOL IsDerivedFrom (const CRuntimeClass * pBaseClass) const;
Restituisce TRUE se la classe di chiamare IsDerivedFrom il membro della classe č derivata dalla classe di base cui struttura CRuntimeClass č dato come parametro. IsDerivedFrom cammina dalla classe del membro della catena delle classi derivate fino alla cima e restituisce FALSE solo se viene trovata alcuna corrispondenza per la classe base.
&Notanbsp; Per utilizzare la struttura CRuntimeClass , č necessario includere la macro IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATEo IMPLEMENT_SERIAL nell'implementazione della classe per la quale si desidera recuperare informazioni sull'oggetto in fase di esecuzione.
Per ulteriori informazioni sull'utilizzo di CRuntimeClass, vedere l'articolo classe CObject: informazioni sulla classe l'accesso A Run-Time nel manuale del programmatore di Visual C++.
Vedere anchenbsp;CObject::GetRuntimeClass, CObject::IsKindOf, RU&NTIME_CLASS, IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, IMPLEMENT_SERIAL