CObject::GetRuntimeClass
更新 : 2007 年 11 月
オブジェクトのクラスに対応する CRuntimeClass 構造体を返します。
virtual CRuntimeClass* GetRuntimeClass( ) const;
戻り値
このオブジェクトのクラスに対応する CRuntimeClass 構造体へのポインタを返します。NULL になることはありません。
解説
CObject の各派生クラスには、それぞれ 1 つの CRuntimeClass 構造体が用意されています。この構造体のメンバを次に示します。
LPCSTR m_lpszClassName ASCII 文字でのクラス名を持つ NULL で終わる文字列です。
int m_nObjectSize オブジェクトのバイト単位のサイズです。別に割り当てられたメモリへのポインタをオブジェクトがデータ メンバとして持っている場合でも、そのメモリのサイズは含まれません。
UINT m_wSchema スキーマ番号です。-1 のときは、シリアル化できないクラスです。スキーマ番号の説明については、「IMPLEMENT_SERIAL」マクロを参照してください。
CObject* ( PASCAL* m_pfnCreateObject )( ) 派生クラスのオブジェクトを構築する既定のコンストラクタへの関数ポインタです。クラスが動的に構築された場合のみ有効です。それ以外の場合は、NULL を返します。
CRuntimeClass* ( PASCAL* m_pfn_GetBaseClass )( ) アプリケーションが AFXDLL バージョンの MFC に動的にリンクされている場合、基本クラスの CRuntimeClass 構造体を返す関数へのポインタです。
CRuntimeClass* m_pBaseClass MFC に静的にリンクする場合、基本クラスの CRuntimeClass 構造体へのポインタです。
この関数は、クラスを実装する場合に IMPLEMENT_DYNAMIC、IMPLEMENT_DYNCREATE、または IMPLEMENT_SERIAL のいずれかのマクロを使用することが必要です。使用しない場合は、正しい結果が得られません。
使用例
すべての CObject の例で使われている CAge クラスのリストについては、「CObList::CObList」を参照してください。
CAge a(21);
CRuntimeClass* prt = a.GetRuntimeClass();
ASSERT(strcmp(prt->m_lpszClassName, "CAge") == 0);
必要条件
ヘッダー : afx.h