CRuntimeClass 構造体CRuntimeClass Structure

各クラスから派生したCObjectに関連付けられている、CRuntimeClass実行時にオブジェクトまたはその基底クラスに関する情報の取得に使用できる構造体。Each class derived from CObject is associated with a CRuntimeClass structure that you can use to obtain information about an object or its base class at run time.

構文Syntax

struct CRuntimeClass

メンバーMembers

パブリック メソッドPublic Methods

名前Name 説明Description
CRuntimeClass::CreateObjectCRuntimeClass::CreateObject 実行時にオブジェクトを作成します。Creates an object during run time.
CRuntimeClass::FromNameCRuntimeClass::FromName 使い慣れたクラス名を使用して、実行時に、オブジェクトを作成します。Creates an object during run time using the familiar class name.
CRuntimeClass::IsDerivedFromCRuntimeClass::IsDerivedFrom クラスは、指定したクラスから派生されているかどうかを決定します。Determines if the class is derived from the specified class.

パブリック データ メンバーPublic Data Members

名前Name 説明Description
CRuntimeClass::m_lpszClassNameCRuntimeClass::m_lpszClassName クラスの名前。The name of the class.
CRuntimeClass::m_nObjectSizeCRuntimeClass::m_nObjectSize オブジェクトのサイズ (バイト単位)。The size of the object in bytes.
CRuntimeClass::m_pBaseClassCRuntimeClass::m_pBaseClass ポインター、CRuntimeClass基底クラスの構造体。A pointer to the CRuntimeClass structure of the base class.
CRuntimeClass::m_pfnCreateObjectCRuntimeClass::m_pfnCreateObject 動的にオブジェクトを作成する関数へのポインター。A pointer to the function that dynamically creates the object.
CRuntimeClass::m_pfnGetBaseClassCRuntimeClass::m_pfnGetBaseClass 返します、 CRuntimeClass (時に動的に使用できるリンク) のみを構造体します。Returns the CRuntimeClass structure (only available when dynamically linked).
CRuntimeClass::m_wSchemaCRuntimeClass::m_wSchema クラスのスキーマの数。The schema number of the class.

RemarksRemarks

CRuntimeClass 構造体は、そのため、基底クラスはありません。CRuntimeClass is a structure and therefore does not have a base class.

実行時にオブジェクトのクラスを特定する機能は、特別な型チェック関数の引数が必要な場合、またはオブジェクトのクラスに基づく特殊なコードを記述する必要がありますに便利です。The ability to determine the class of an object at run time is useful when extra type checking of function arguments is needed, or when you must write special-purpose code based on the class of an object. ランタイム クラス情報は、C++ 言語で直接サポートされていません。Run-time class information is not supported directly by the C++ language.

CRuntimeClass ポインターなどの C++ オブジェクトの関連情報を提供します、CRuntimeClassの基本クラスと関連するクラスの ASCII クラス名。CRuntimeClass provides information on the related C++ object, such as a pointer to the CRuntimeClass of the base class and the ASCII class name of the related class. この構造体は、既知の名前を使用して、関連するクラスは、特定のクラスから派生されているかどうかを決定するオブジェクトの種類を指定するオブジェクトを動的に作成するために使用できるさまざまな関数も実装します。This structure also implements various functions that can be used to dynamically create objects, specifying the type of object by using a familiar name, and determining if the related class is derived from a specific class.

使用しての詳細についてはCRuntimeClass、記事をご覧くださいクラス情報にアクセスするします。For more information on using CRuntimeClass, see the article Accessing Run-Time Class Information.

継承階層Inheritance Hierarchy

CRuntimeClass

必要条件Requirements

ヘッダー: afx.hHeader: afx.h

CRuntimeClass::CreateObjectCRuntimeClass::CreateObject

実行時に動的に指定したクラスを作成するには、この関数を呼び出します。Call this function to dynamically create the specified class during run time.

CObject* CreateObject();

static CObject* PASCAL CreateObject(LPCSTR lpszClassName);

static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);

パラメーターParameters

lpszClassNamelpszClassName
作成するクラスの既知の名前。The familiar name of the class to be created.

戻り値Return Value

新しく作成したオブジェクトまたはクラス名が見つからないか、オブジェクトを作成する十分なメモリがある場合は NULL へのポインター。A pointer to the newly created object, or NULL if the class name is not found or there is insufficient memory to create the object.

RemarksRemarks

派生したクラスCObject動的作成は、実行時に指定したクラスのオブジェクトを作成する機能をサポートすることができます。Classes derived from CObject can support dynamic creation, which is the ability to create an object of a specified class at run time. ドキュメント、ビュー、およびフレーム クラスでは、動的な作成をサポートする必要がありますなど。Document, view, and frame classes, for example, should support dynamic creation. 動的な作成の詳細については、 CreateObject 、メンバーを参照してくださいCObject クラスCObject クラス。機能レベルを指定するします。For more information on dynamic creation and the CreateObject member, see CObject Class and CObject Class: Specifying Levels of Functionality.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

CRuntimeClass::FromNameCRuntimeClass::FromName

取得するには、この関数を呼び出し、CRuntimeClass使い慣れた名に関連付けられている構造体。Call this function to retrieve the CRuntimeClass structure associated with the familiar name.

static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);

static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);

パラメーターParameters

lpszClassNamelpszClassName
派生したクラスの使い慣れた名前CObjectします。The familiar name of a class derived from CObject.

戻り値Return Value

ポインターをCRuntimeClassで渡されると、名前に対応するオブジェクトlpszClassNameします。A pointer to a CRuntimeClass object, corresponding to the name as passed in lpszClassName. 一致するクラス名が見つからなかった場合は、NULL を返します。The function returns NULL if no matching class name was found.

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::IsDerivedFromCRuntimeClass::IsDerivedFrom

呼び出し元のクラスがで指定されたクラスから派生したかどうかを判断するには、この関数を呼び出し、パラメーター。Call this function to determine if the calling class is derived from the class specified in the pBaseClass parameter.

BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

パラメーターParameters

pBaseClass
派生したクラスの使い慣れた名前CObjectします。The familiar name of a class derived from CObject.

戻り値Return Value

TRUE の場合、クラスの呼び出し元IsDerivedFromベースからは派生クラスCRuntimeClass構造体は、パラメーターとして指定した場合は FALSE。TRUE if the class calling IsDerivedFrom is derived from the base class whose CRuntimeClass structure is given as a parameter; otherwise FALSE.

RemarksRemarks

リレーションシップについては、「ウォーキング」チェーン派生クラスのメンバーのクラスから最上位までによって決まります。The relationship is determined by "walking" from the member's class up the chain of derived classes all the way to the top. この関数は、基底クラスの一致が検出されない場合にのみ FALSE を返します。This function only returns FALSE if no match is found for the base class.

注意

使用する、CRuntimeClass構造体、実行時のオブジェクトの情報を取得するクラスの実装では、新規クラス、IMPLEMENT_DYNCREATE、または IMPLEMENT_SERIAL マクロを含める必要があります。To use the CRuntimeClass structure, you must include the IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, or IMPLEMENT_SERIAL macro in the implementation of the class for which you want to retrieve run-time object information.

使用しての詳細についてはCRuntimeClass、記事をご覧くださいCObject クラス。ランタイム クラス情報にアクセスするします。For more information on using CRuntimeClass, see the article CObject Class: Accessing Run-Time Class Information.

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_lpszClassNameCRuntimeClass::m_lpszClassName

ASCII のクラス名を含む null で終わる文字列。A null-terminated string containing the ASCII class name.

RemarksRemarks

この名前を使用して、クラスのインスタンスを作成するために使用できます、FromNameメンバー関数。This name can be used to create an instance of the class using the FromName member function.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

CRuntimeClass::m_nObjectSizeCRuntimeClass::m_nObjectSize

(バイト単位)、オブジェクトのサイズ。The size of the object, in bytes.

RemarksRemarks

オブジェクトは、割り当てられたメモリを指すデータ メンバーを持っている場合はそのメモリのサイズは含まれません。If the object has data members that point to allocated memory, the size of that memory is not included.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

CRuntimeClass::m_pBaseClassCRuntimeClass::m_pBaseClass

このデータ メンバーがへのポインターを格納する場合は、アプリケーションは、静的にリンクをCRuntimeClass基底クラスの構造体。If your application statically links to MFC, this data member contains a pointer to the CRuntimeClass structure of the base class.

RemarksRemarks

アプリケーションは、MFC ライブラリに動的にリンクを場合、参照してくださいm_pfnGetBaseClassします。If your application dynamically links to the MFC library, see m_pfnGetBaseClass.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

CRuntimeClass::m_pfnCreateObjectCRuntimeClass::m_pfnCreateObject

クラスのオブジェクトを作成する既定のコンス トラクター関数のポインター。A function pointer to the default constructor that creates an object of your class.

RemarksRemarks

このポインターが有効なは、クラスは、動的作成をサポートしている場合のみそれ以外の場合、関数は、NULL を返します。This pointer is only valid if the class supports dynamic creation; otherwise, the function returns NULL.

CRuntimeClass::m_pfnGetBaseClassCRuntimeClass::m_pfnGetBaseClass

このデータ メンバーを返す関数を指すアプリケーションは、共有 DLL としての MFC ライブラリを使用する場合、CRuntimeClass基底クラスの構造体。If your application uses the MFC library as a shared DLL, this data member points to a function that returns the CRuntimeClass structure of the base class.

RemarksRemarks

アプリケーションに静的にリンクする場合、MFC ライブラリを参照してください。 m_pBaseClassします。If your application statically links to the MFC library, see m_pBaseClass.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

CRuntimeClass::m_wSchemaCRuntimeClass::m_wSchema

スキーマの数 (シリアル化できないクラスの場合は-1)。The schema number ( -1 for nonserializable classes).

RemarksRemarks

スキーマ番号の詳細については、次を参照してください。、 IMPLEMENT_SERIALマクロ。For more information on schema numbers, see the IMPLEMENT_SERIAL macro.

Example

例をご覧くださいIsDerivedFromします。See the example for IsDerivedFrom.

関連項目See also

階層図Hierarchy Chart
CObject::GetRuntimeClassCObject::GetRuntimeClass
CObject::IsKindOfCObject::IsKindOf
RUNTIME_CLASSRUNTIME_CLASS
IMPLEMENT_DYNAMICIMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATEIMPLEMENT_DYNCREATE
IMPLEMENT_SERIALIMPLEMENT_SERIAL