다음을 통해 공유


CRuntimeClass 구조체

파생된 CObject 각 클래스는 런타임에 개체 또는 기본 클래스에 대한 정보를 가져오는 데 사용할 수 있는 구조체와 연결 CRuntimeClass 됩니다.

구문

struct CRuntimeClass

멤버

공용 메서드

이름 설명
CRuntimeClass::CreateObject 런타임 동안 개체를 만듭니다.
CRuntimeClass::FromName 익숙한 클래스 이름을 사용하여 런타임 중에 개체를 만듭니다.
CRuntimeClass::IsDerivedFrom 클래스가 지정된 클래스에서 파생되는지 여부를 확인합니다.

공용 데이터 멤버

속성 설명
CRuntimeClass::m_lpszClassName 클래스의 이름입니다.
CRuntimeClass::m_nObjectSize 개체의 크기(바이트)입니다.
CRuntimeClass::m_pBaseClass 기본 클래스의 구조에 CRuntimeClass 대한 포인터입니다.
CRuntimeClass::m_pfnCreateObject 개체를 동적으로 만드는 함수에 대한 포인터입니다.
CRuntimeClass::m_pfnGetBaseClass 구조체를 반환합니다 CRuntimeClass (동적으로 연결된 경우에만 사용 가능).
CRuntimeClass::m_wSchema 클래스의 스키마 번호입니다.

설명

CRuntimeClass 는 구조체이므로 기본 클래스가 없습니다.

런타임에 개체의 클래스를 확인하는 기능은 함수 인수의 추가 형식 검사가 필요하거나 개체 클래스에 따라 특수 용도의 코드를 작성해야 하는 경우에 유용합니다. 런타임 클래스 정보는 C++ 언어에서 직접 지원되지 않습니다.

CRuntimeClass 는 기본 클래스의 포인터 CRuntimeClass 및 관련 클래스의 ASCII 클래스 이름과 같은 관련 C++ 개체에 대한 정보를 제공합니다. 또한 이 구조는 개체를 동적으로 만드는 데 사용할 수 있는 다양한 함수를 구현하고, 친숙한 이름을 사용하여 개체의 형식을 지정하고, 관련 클래스가 특정 클래스에서 파생되는지 여부를 확인합니다.

사용에 CRuntimeClass대한 자세한 내용은 런타임 클래스 정보에 액세스하는 문서를 참조하세요.

상속 계층 구조

CRuntimeClass

요구 사항

헤더: afx.h

CRuntimeClass::CreateObject

이 함수를 호출하여 런타임 동안 지정된 클래스를 동적으로 만듭니다.

CObject* CreateObject();

static CObject* PASCAL CreateObject(LPCSTR lpszClassName);

static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);

매개 변수

lpszClassName
만들 클래스의 친숙한 이름입니다.

Return Value

새로 만든 개체에 대한 포인터이거나, 클래스 이름을 찾을 수 없거나 개체를 만들 메모리가 부족한 경우 NULL입니다.

설명

파생된 CObject 클래스는 런타임에 지정된 클래스의 개체를 만드는 기능인 동적 생성을 지원할 수 있습니다. 예를 들어 문서, 뷰 및 프레임 클래스는 동적 생성을 지원해야 합니다. 동적 만들기 및 CreateObject 멤버 에 대한 자세한 내용은 CObject 클래스CObject 클래스: 기능 수준 지정을 참조하세요.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

CRuntimeClass::FromName

이 함수를 호출하여 친숙한 이름과 연결된 구조를 검색 CRuntimeClass 합니다.

static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);

static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);

매개 변수

lpszClassName
에서 파생된 CObject클래스의 친숙한 이름입니다.

Return Value

lpszClassName에 전달된 이름에 해당하는 개체에 대한 포인터 CRuntimeClass 입니다. 일치하는 클래스 이름을 찾을 수 없는 경우 함수는 NULL을 반환합니다.

예시

// 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

호출 클래스가 pBaseClass 매개 변수에 지정된 클래스에서 파생되는지 확인하려면 이 함수를 호출합니다.

BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

매개 변수

pBaseClass
에서 파생된 CObject클래스의 친숙한 이름입니다.

Return Value

클래스 호출 IsDerivedFrom 이 매개 변수로 지정된 기본 클래스 CRuntimeClass 에서 파생된 경우 TRUE이고, 그렇지 않으면 FALSE입니다.

설명

관계는 멤버의 클래스에서 파생 클래스의 체인을 맨 위로 "이동"하여 결정됩니다. 이 함수는 기본 클래스에 대한 일치 항목이 없는 경우에만 FALSE를 반환합니다.

참고 항목

구조를 사용 CRuntimeClass 하려면 런타임 개체 정보를 검색할 클래스의 구현에 IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE 또는 IMPLEMENT_SERIAL 매크로를 포함해야 합니다.

사용에 CRuntimeClass대한 자세한 내용은 CObject 클래스: 런타임 클래스 정보 액세스 문서를 참조하세요.

예시

// 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

ASCII 클래스 이름을 포함하는 null로 끝나는 문자열입니다.

설명

이 이름은 멤버 함수를 사용하여 클래스의 인스턴스를 FromName 만드는 데 사용할 수 있습니다.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

CRuntimeClass::m_nObjectSize

개체의 크기(바이트)입니다.

설명

개체에 할당된 메모리를 가리키는 데이터 멤버가 있는 경우 해당 메모리의 크기는 포함되지 않습니다.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

CRuntimeClass::m_pBaseClass

애플리케이션이 정적으로 MFC에 연결되는 경우 이 데이터 멤버는 기본 클래스의 구조에 CRuntimeClass 대한 포인터를 포함합니다.

설명

애플리케이션이 MFC 라이브러리에 동적으로 연결되는 경우 m_pfnGetBaseClass 참조하세요.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

CRuntimeClass::m_pfnCreateObject

클래스의 개체를 만드는 기본 생성자에 대한 함수 포인터입니다.

설명

이 포인터는 클래스가 동적 생성을 지원하는 경우에만 유효합니다. 그렇지 않으면 함수는 NULL을 반환합니다.

CRuntimeClass::m_pfnGetBaseClass

애플리케이션에서 MFC 라이브러리를 공유 DLL로 사용하는 경우 이 데이터 멤버는 기본 클래스의 구조를 반환 CRuntimeClass 하는 함수를 가리킵니다.

설명

애플리케이션이 MFC 라이브러리에 정적으로 연결되는 경우 m_pBaseClass 참조하세요.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

CRuntimeClass::m_wSchema

스키마 번호(비직렬화할 수 없는 클래스의 경우 -1)입니다.

설명

스키마 번호에 대한 자세한 내용은 IMPLEMENT_SERIAL 매크로를 참조하세요.

예시

IsDerivedFrom에 대한 예제를 참조하세요.

참고 항목

계층 구조 차트
CObject::GetRuntimeClass
CObject::IsKindOf
RUNTIME_CLASS
IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE
IMPLEMENT_SERIAL