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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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 CRuntimeClass
hakkı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ı.
Dönüş 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 CObject
türetilen bir sınıfın tanıdık adı.
Dönüş 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 CObject
türetilen bir sınıfın tanıdık adı.
Dönüş 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.
Not
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 CRuntimeClass
hakkı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