次の方法で共有


MFC クラス オブジェクトの型キャスト

型キャスト マクロを使用すると、特定のクラスのオブジェクトを指すポインターに、キャストが有効であることをチェックせずに、特定のポインターをキャストできます。

次の表に、MFC 型キャスト マクロの一覧を示します。

MFC クラス オブジェクトへのポインターをキャストするマクロ

名前 説明
DYNAMIC_DOWNCAST キャストが有効かどうかを確認するためにチェック中に、クラス オブジェクトへのポインターへのポインターをキャストします。
STATIC_DOWNCAST オブジェクトへのポインターを 1 つのクラスから関連する型のポインターにキャストします。 デバッグ ビルドで、オブジェクトがターゲット型の "種類" でない場合は AS Standard Edition RT が発生します。

DYNAMIC_DOWNCAST

キャストが有効かどうかを確認チェック、ポインターをクラス オブジェクトへのポインターにキャストする便利な方法を提供します。

DYNAMIC_DOWNCAST(class, pointer)

パラメーター

クラス
クラスの名前。

pointer
クラスのオブジェクトへのポインターにキャストされるポインター。

解説

このマクロは、ポインター パラメーターをクラス パラメーターの型のオブジェクトへのポインターにキャストします。

ポインターによって参照されるオブジェクトが、識別されたクラスの "種類" である場合、マクロは適切なポインターを返します。 有効キャストでない場合、マクロは NULL を返します。

STATIC_DOWNCAST

pobjectclass_name オブジェクトへのポインターにキャストします。

STATIC_DOWNCAST(class_name, pobject)

パラメーター

class_name
キャストされるクラスの名前。

pobject
class_name オブジェクトへのポインターにキャストされるポインター。

解説

pobject は NULL であるか、class_nameから 直接、または間接的に派生するクラスのオブジェクトを指す必要があります。 _DEBUGプリプロセッサ シンボルが定義されたアプリケーションのビルドでは、pobject が NULL でない場合、または class_name パラメーターで指定されたクラスの "種類" ではないオブジェクトを指している場合、マクロは AS Standard Edition RT になります (CObject::IsKindOf を参照)。 _DEBUG以外のビルドでは、マクロは型のチェックなしでキャストを実行します。

class_name パラメーターで指定するクラスは、CObject クラス: CObject からのクラスの派生に関する記事で説明されているように、DECLARE_DYNAMICとIMPLEMENT_DYNAMIC、DECLARE_DYNCREATEおよびIMPLEMENT_DYNCREATE、または DECLARE_Standard Edition RIAL マクロと IMPLEMENT_Standard Edition RIAL マクロから派生CObjectし、使用する必要があります。

たとえば、次の式を使用するためのポインターに CMyDoc、呼び出された pMyDocポインターを CDocument キャストできます。

CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);

直接または間接的CDocumentに派生したオブジェクトを指していない場合pMyDoc、マクロは AS Standard Edition RT になります。

関連項目

マクロとグローバル