共用方式為


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。

另請參閱

宏和全域