Aracılığıyla paylaş


CRuntimeClass Yapısı

öğesinden CObject türetilen her sınıf, çalışma zamanında bir CRuntimeClass nesne veya temel sınıfı hakkında bilgi almak için kullanabileceğiniz bir yapıyla ilişkilendirilir.

Sözdizimi

struct CRuntimeClass

Üyeler

Genel Yöntemler

Ad Tanım
CRuntimeClass::CreateObject Çalışma zamanında bir nesne oluşturur.
CRuntimeClass::FromName Tanıdık sınıf adını kullanarak çalışma zamanında bir nesne oluşturur.
CRuntimeClass::IsDerivedFrom Sınıfın belirtilen sınıftan türetilip türetilmemiş olduğunu belirler.

Ortak Veri Üyeleri

Ad Tanım
CRuntimeClass::m_lpszClassName Sınıfın adı.
CRuntimeClass::m_nObjectSize Nesnenin bayt cinsinden boyutu.
CRuntimeClass::m_pBaseClass Temel sınıfın CRuntimeClass yapısının işaretçisi.
CRuntimeClass::m_pfnCreateObject Nesneyi dinamik olarak oluşturan işlev işaretçisi.
CRuntimeClass::m_pfnGetBaseClass Yapıyı CRuntimeClass döndürür (yalnızca dinamik olarak bağlandığında kullanılabilir).
CRuntimeClass::m_wSchema Sınıfın şema numarası.

Açıklamalar

CRuntimeClass bir yapıdır ve bu nedenle bir temel sınıfı yoktur.

Bir nesnenin sınıfını çalışma zamanında belirleme özelliği, işlev bağımsız değişkenlerinin ek tür denetimi gerektiğinde veya bir nesnenin sınıfını temel alan özel amaçlı kod yazmanız gerektiğinde yararlıdır. Çalışma zamanı sınıf bilgileri doğrudan C++ dili tarafından desteklenmez.

CRuntimeClass , temel sınıfın işaretçisi CRuntimeClass ve ilgili sınıfın ASCII sınıf adı gibi ilgili C++ nesnesi hakkında bilgi sağlar. Bu yapı ayrıca nesneleri dinamik olarak oluşturmak için kullanılabilecek çeşitli işlevler uygular, tanıdık bir ad kullanarak nesne türünü belirtir ve ilgili sınıfın belirli bir sınıftan türetilip türetilmediğini belirler.

kullanma CRuntimeClasshakkında daha fazla bilgi için Çalışma Zamanı Sınıf Bilgilerine Erişme makalesine bakın.

Devralma Hiyerarşisi

CRuntimeClass

Gereksinimler

Üst bilgi: afx.h

CRuntimeClass::CreateObject

Çalışma zamanında belirtilen sınıfı dinamik olarak oluşturmak için bu işlevi çağırın.

CObject* CreateObject();

static CObject* PASCAL CreateObject(LPCSTR lpszClassName);

static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);

Parametreler

lpszClassName
Oluşturulacak sınıfın tanıdık adı.

İade Değeri

Yeni oluşturulan nesnenin işaretçisi veya sınıf adı bulunamazsa veya nesneyi oluşturmak için yeterli bellek yoksa NULL.

Açıklamalar

öğesinden CObject türetilen sınıflar, çalışma zamanında belirtilen sınıfın nesnesini oluşturabilen dinamik oluşturmayı destekleyebilir. Örneğin belge, görünüm ve çerçeve sınıfları dinamik oluşturmayı desteklemelidir. Dinamik oluşturma ve CreateObject üye hakkında daha fazla bilgi için bkz . CObject Sınıfı ve CObject Sınıfı: İşlev düzeylerini belirtme.

Örnek

IsDerivedFrom örneğine bakın.

CRuntimeClass::FromName

Tanıdık adla ilişkili yapıyı CRuntimeClass almak için bu işlevi çağırın.

static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);

static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);

Parametreler

lpszClassName
sınıfından CObjecttüretilen bir sınıfın tanıdık adı.

İade Değeri

LpszClassName içinde geçirilen ada karşılık gelen bir CRuntimeClass nesne işaretçisi. Eşleşen bir sınıf adı bulunamazsa işlev NULL döndürür.

Örnek

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

Çağıran sınıfın pBaseClass parametresinde belirtilen sınıftan türetilip türetilmemiş olduğunu belirlemek için bu işlevi çağırın.

BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

Parametreler

pBaseClass
sınıfından CObjecttüretilen bir sınıfın tanıdık adı.

İade Değeri

Sınıf çağrısı IsDerivedFrom , yapısı parametre olarak verilen temel sınıftan CRuntimeClass türetilirse TRUE; aksi takdirde YANLIŞ.

Açıklamalar

İlişki, üyenin sınıfından türetilmiş sınıflar zincirinden en üste kadar "yürüme" ile belirlenir. Bu işlev yalnızca temel sınıf için eşleşme bulunamazsa YANLIŞ döndürür.

Dekont

Yapısını kullanmak CRuntimeClass için, çalışma zamanı nesne bilgilerini almak istediğiniz sınıfın uygulamasına IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE veya IMPLEMENT_SERIAL makrosunu eklemeniz gerekir.

kullanma CRuntimeClasshakkında daha fazla bilgi için CObject Sınıfı: Çalışma Zamanı Sınıf Bilgilerine Erişme makalesine bakın.

Örnek

// 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 sınıf adını içeren null olarak sonlandırılan bir dize.

Açıklamalar

Bu ad, üye işlevini kullanarak sınıfın bir örneğini FromName oluşturmak için kullanılabilir.

Örnek

IsDerivedFrom örneğine bakın.

CRuntimeClass::m_nObjectSize

Nesnenin bayt cinsinden boyutu.

Açıklamalar

Nesne ayrılan belleği işaret eden veri üyelerine sahipse, bu belleğin boyutu dahil değildir.

Örnek

IsDerivedFrom örneğine bakın.

CRuntimeClass::m_pBaseClass

Uygulamanız MFC'ye statik olarak bağlandıysa, bu veri üyesi temel sınıfın CRuntimeClass yapısına bir işaretçi içerir.

Açıklamalar

Uygulamanız MFC kitaplığına dinamik olarak bağlandıysa bkz . m_pfnGetBaseClass.

Örnek

IsDerivedFrom örneğine bakın.

CRuntimeClass::m_pfnCreateObject

Sınıfınızın nesnesini oluşturan varsayılan oluşturucuya yönelik işlev işaretçisi.

Açıklamalar

Bu işaretçi yalnızca sınıfı dinamik oluşturmayı destekliyorsa geçerlidir; aksi takdirde işlev NULL döndürür.

CRuntimeClass::m_pfnGetBaseClass

Uygulamanız paylaşılan DLL olarak MFC kitaplığını kullanıyorsa, bu veri üyesi temel sınıfın CRuntimeClass yapısını döndüren bir işlevi gösterir.

Açıklamalar

Uygulamanız MFC kitaplığına statik olarak bağlandıysa bkz . m_pBaseClass.

Örnek

IsDerivedFrom örneğine bakın.

CRuntimeClass::m_wSchema

Şema numarası ( seri durumdan çıkarılamayan sınıflar için -1).

Açıklamalar

Şema numaraları hakkında daha fazla bilgi için IMPLEMENT_SERIAL makrosna bakın.

Örnek

IsDerivedFrom örneğine bakın.

Ayrıca bkz.

Hiyerarşi Grafiği
CObject::GetRuntimeClass
CObject::IsKindOf
RUNTIME_CLASS
IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE
IMPLEMENT_SERIAL