Struktur CRuntimeClass
Setiap kelas yang berasal dikaitkan CObject
dengan CRuntimeClass
struktur yang dapat Anda gunakan untuk mendapatkan informasi tentang objek atau kelas dasarnya pada waktu proses.
Sintaks
struct CRuntimeClass
Anggota
Metode Publik
Nama | Deskripsi |
---|---|
CRuntimeClass::CreateObject | Membuat objek selama run time. |
CRuntimeClass::FromName | Membuat objek selama run time menggunakan nama kelas yang sudah dikenal. |
CRuntimeClass::IsDerivedFrom | Menentukan apakah kelas berasal dari kelas yang ditentukan. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CRuntimeClass::m_lpszClassName | Nama kelas. |
CRuntimeClass::m_nObjectSize | Ukuran objek dalam byte. |
CRuntimeClass::m_pBaseClass | Penunjuk ke CRuntimeClass struktur kelas dasar. |
CRuntimeClass::m_pfnCreateObject | Penunjuk ke fungsi yang secara dinamis membuat objek. |
CRuntimeClass::m_pfnGetBaseClass | Mengembalikan CRuntimeClass struktur (hanya tersedia saat ditautkan secara dinamis). |
CRuntimeClass::m_wSchema | Nomor skema kelas. |
Keterangan
CRuntimeClass
adalah struktur dan karenanya tidak memiliki kelas dasar.
Kemampuan untuk menentukan kelas objek pada waktu proses berguna ketika pemeriksaan jenis tambahan argumen fungsi diperlukan, atau ketika Anda harus menulis kode tujuan khusus berdasarkan kelas objek. Informasi kelas run-time tidak didukung langsung oleh bahasa C++.
CRuntimeClass
memberikan informasi tentang objek C++ terkait, seperti penunjuk ke CRuntimeClass
kelas dasar dan nama kelas ASCII dari kelas terkait. Struktur ini juga mengimplementasikan berbagai fungsi yang dapat digunakan untuk membuat objek secara dinamis, menentukan jenis objek dengan menggunakan nama yang sudah dikenal, dan menentukan apakah kelas terkait berasal dari kelas tertentu.
Untuk informasi selengkapnya tentang menggunakan CRuntimeClass
, lihat artikel Mengakses Informasi Kelas Run-Time.
Hierarki Warisan
CRuntimeClass
Persyaratan
Header: afx.h
CRuntimeClass::CreateObject
Panggil fungsi ini untuk membuat kelas yang ditentukan secara dinamis selama run time.
CObject* CreateObject();
static CObject* PASCAL CreateObject(LPCSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);
Parameter
lpszClassName
Nama kelas yang akrab untuk dibuat.
Tampilkan Nilai
Penunjuk ke objek yang baru dibuat, atau NULL jika nama kelas tidak ditemukan atau memori tidak cukup untuk membuat objek.
Keterangan
Kelas yang berasal dari CObject
dapat mendukung pembuatan dinamis, yang merupakan kemampuan untuk membuat objek kelas tertentu pada waktu proses. Kelas dokumen, tampilan, dan bingkai, misalnya, harus mendukung pembuatan dinamis. Untuk informasi selengkapnya tentang pembuatan dinamis dan CreateObject
anggota, lihat Kelas CObject dan Kelas CObject: Menentukan Tingkat Fungsionalitas.
Contoh
Lihat contoh untuk IsDerivedFrom.
CRuntimeClass::FromName
Panggil fungsi ini untuk mengambil struktur yang CRuntimeClass
terkait dengan nama yang sudah dikenal.
static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);
static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);
Parameter
lpszClassName
Nama kelas yang akrab berasal dari CObject
.
Tampilkan Nilai
Penunjuk ke CRuntimeClass
objek, sesuai dengan nama seperti yang diteruskan di lpszClassName. Fungsi mengembalikan NULL jika tidak ada nama kelas yang cocok yang ditemukan.
Contoh
// 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
Panggil fungsi ini untuk menentukan apakah kelas panggilan berasal dari kelas yang ditentukan dalam parameter pBaseClass .
BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
Parameter
pBaseClass
Nama kelas yang akrab berasal dari CObject
.
Tampilkan Nilai
TRUE jika panggilan IsDerivedFrom
kelas berasal dari kelas dasar yang strukturnya CRuntimeClass
diberikan sebagai parameter; jika tidak FALSE.
Keterangan
Hubungan ditentukan oleh "berjalan" dari kelas anggota naik rantai kelas turunan sampai ke atas. Fungsi ini hanya mengembalikan FALSE jika tidak ada kecocokan yang ditemukan untuk kelas dasar.
Catatan
Untuk menggunakan CRuntimeClass
struktur, Anda harus menyertakan makro IMPLEMENT_DYNAMIC, IMPLEMENT_DYNCREATE, atau IMPLEMENT_SERIAL dalam implementasi kelas tempat Anda ingin mengambil informasi objek run-time.
Untuk informasi selengkapnya tentang menggunakan CRuntimeClass
, lihat artikel Kelas CObject: Mengakses Informasi Kelas Run-Time.
Contoh
// 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
String null-terminated yang berisi nama kelas ASCII.
Keterangan
Nama ini dapat digunakan untuk membuat instans kelas menggunakan FromName
fungsi anggota.
Contoh
Lihat contoh untuk IsDerivedFrom.
CRuntimeClass::m_nObjectSize
Ukuran objek, dalam byte.
Keterangan
Jika objek memiliki anggota data yang menunjuk ke memori yang dialokasikan, ukuran memori tersebut tidak disertakan.
Contoh
Lihat contoh untuk IsDerivedFrom.
CRuntimeClass::m_pBaseClass
Jika aplikasi Anda secara statis menautkan ke MFC, anggota data ini berisi penunjuk ke CRuntimeClass
struktur kelas dasar.
Keterangan
Jika aplikasi Anda secara dinamis ditautkan ke pustaka MFC, lihat m_pfnGetBaseClass.
Contoh
Lihat contoh untuk IsDerivedFrom.
CRuntimeClass::m_pfnCreateObject
Penunjuk fungsi ke konstruktor default yang membuat objek kelas Anda.
Keterangan
Pointer ini hanya valid jika kelas mendukung pembuatan dinamis; jika tidak, fungsi mengembalikan NULL.
CRuntimeClass::m_pfnGetBaseClass
Jika aplikasi Anda menggunakan pustaka MFC sebagai DLL bersama, anggota data ini menunjuk ke fungsi yang mengembalikan CRuntimeClass
struktur kelas dasar.
Keterangan
Jika aplikasi Anda secara statis menautkan ke pustaka MFC, lihat m_pBaseClass.
Contoh
Lihat contoh untuk IsDerivedFrom.
CRuntimeClass::m_wSchema
Nomor skema ( -1 untuk kelas yang tidak dapat diserialisasi).
Keterangan
Untuk informasi selengkapnya tentang nomor skema, lihat makro IMPLEMENT_SERIAL .
Contoh
Lihat contoh untuk IsDerivedFrom.
Baca juga
Bagan Hierarki
CObject::GetRuntimeClass
CObject::IsKindOf
RUNTIME_CLASS
IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE
IMPLEMENT_SERIAL
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk