MFC 類別物件的類型轉換
型別轉換宏提供將指定指標轉換成指向特定類別物件的指標的方法,且不檢查轉換是否合法。
下表列出 MFC 類型轉換宏。
將指標轉換成 MFC 類別物件的宏
名稱 | 描述 |
---|---|
DYNAMIC_DOWNCAST | 在檢查轉換是否合法時,將指標轉換成類別物件的指標。 |
STATIC_DOWNCAST | 將物件指標從一個類別轉換成相關類型的指標。 在偵錯組建中,如果物件不是目標型別的「種類」,則會導致 ASSERT。 |
DYNAMIC_DOWNCAST
提供一個方便的方式,在檢查轉換是否合法時,將指標轉換成類別物件的指標。
DYNAMIC_DOWNCAST(class, pointer)
參數
class
類別的名稱。
pointer
要轉換成類別物件之指標的 指標。
備註
宏會將指標參數轉換成 類別 參數型別物件的 指標 。
如果指標所參考的物件是已識別類別的「種類」,宏會傳回適當的指標。 如果不是合法的轉換,宏會傳回 Null。
STATIC_DOWNCAST
將 pobject 轉換成class_name 物件的指標 。
STATIC_DOWNCAST(class_name, pobject)
參數
class_name
要轉換成的類別名稱。
pobject
要轉換成class_name 物件的指標 。
備註
pobject 必須是 Null,或指向直接或間接衍生自 class_name 之類別的物件。 在已定義_DEBUG預處理器符號的應用程式組建中,如果 pobject 不是 Null,則宏會判斷提示,或指向class_name 參數中指定的 類別不是 「kind」 的物件(請參閱 CObject ::IsKindOf )。 在非 _DEBUG 組建中,宏會執行轉換而不檢查任何類型。
class_name 參數中指定的 類別必須衍生自 CObject
,而且必須使用DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC、DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE,或DECLARE_SERIAL和IMPLEMENT_SERIAL宏,如 CObject 類別:衍生 CObject 類別一文 中所述。
例如,您可以將指標 CMyDoc
轉換成 ,稱為 pMyDoc
的指標,轉換為使用這個運算式的 CDocument
指標:
CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);
如果 pMyDoc
不是指向直接或間接衍生自 CDocument
的物件,宏將會是 ASSERT。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應