MFC Sınıf Nesnelerine İlişkin Tür Atama

Tür atama makroları, belirli bir işaretçiyi belirli bir sınıfın nesnesine işaret eden bir işaretçiye atamanın bir yolunu sağlar ve atamanın yasal olup olmadığını denetler.

Aşağıdaki tabloda MFC türü atama makroları listeleniyor.

İşaretçileri MFC Sınıf Nesnelerine Dönüştüren Makrolar

Veri Akışı Adı Açıklama
DYNAMIC_DOWNCAST Atamanın yasal olup olmadığını denetlerken bir işaretçiyi sınıf nesnesine dönüştürür.
STATIC_DOWNCAST bir işaretçiyi bir sınıftan ilgili tür işaretçisine bir nesneye dönüştürür. Hata ayıklama derlemesinde, nesne hedef türün "türü" değilse BIR ASSERT'a neden olur.

DYNAMIC_DOWNCAST

Atamanın yasal olup olmadığını denetlerken işaretçiyi bir sınıf nesnesine işaretçiye dönüştürmenin kullanışlı bir yolunu sağlar.

DYNAMIC_DOWNCAST(class, pointer)

Parametreler

class
Sınıfın adı.

Işaretçi
Sınıf türünde bir nesneye yönelik bir işaretçiye atanacak işaretçi.

Açıklamalar

Makro, işaretçi parametresini sınıf parametresinin türündeki bir nesneye bir işaretçiye dönüştürür.

İşaretçi tarafından başvuruda bulunılan nesne tanımlanan sınıfın "türü" ise, makro uygun işaretçiyi döndürür. Yasal bir atama değilse, makro NULL döndürür.

STATIC_DOWNCAST

pobject öğesini bir işaretçiye class_name nesnesine dönüştürür.

STATIC_DOWNCAST(class_name, pobject)

Parametreler

class_name
Türüne geçirilmekte olan sınıfın adı.

pobject
bir işaretçiye class_name nesnesine atanacak işaretçi.

Açıklamalar

pobject NULL olmalıdır veya doğrudan veya dolaylı olarak class_name türetilmiş bir sınıfın nesnesine işaret etmelidir. Uygulamanızın _DEBUG ön işlemci simgesi tanımlanmış derlemelerinde, pobject NULL değilse veya class_name parametresinde belirtilen sınıfın "türü" olmayan bir nesneye işaret ederse makro ASSERT olur (bkz. CObject::IsKindOf). _DEBUG olmayan derlemelerde, makro herhangi bir tür denetimi yapmadan dönüştürme işlemini gerçekleştirir.

class_name parametresinde belirtilen sınıf, CObject Sınıfı: CObject'ten Sınıf Türetme makalesinde açıklandığı gibi öğesinden CObject türetilmelidir ve DECLARE_DYNAMIC ve IMPLEMENT_DYNAMIC, DECLARE_DYNCREATE ve IMPLEMENT_DYNCREATE ya da DECLARE_SERIAL ve IMPLEMENT_SERIAL makrolarını kullanmalıdır.

Örneğin, adlı bir işaretçiyiCMyDocpMyDoc, şu ifadeyi kullanmak üzere bir işaretçiye CDocument dönüştürebilirsiniz:

CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);

doğrudan veya dolaylı olarak öğesinden CDocumenttüretilen bir nesneye işaret etmiyorsapMyDoc, makro ASSERT olur.

Ayrıca bkz.

Makrolar ve Genel Ayarlar