MFC クラス オブジェクトの型キャスト
型キャスト マクロを使用すると、特定のクラスのオブジェクトを指すポインターに、キャストが有効であることをチェックせずに、特定のポインターをキャストできます。
次の表に、MFC 型キャスト マクロの一覧を示します。
MFC クラス オブジェクトへのポインターをキャストするマクロ
名前 | 説明 |
---|---|
DYNAMIC_DOWNCAST | キャストが有効かどうかを確認するためにチェック中に、クラス オブジェクトへのポインターへのポインターをキャストします。 |
STATIC_DOWNCAST | オブジェクトへのポインターを 1 つのクラスから関連する型のポインターにキャストします。 デバッグ ビルドで、オブジェクトがターゲット型の "種類" でない場合は AS Standard Edition RT が発生します。 |
DYNAMIC_DOWNCAST
キャストが有効かどうかを確認チェック、ポインターをクラス オブジェクトへのポインターにキャストする便利な方法を提供します。
DYNAMIC_DOWNCAST(class, pointer)
パラメーター
クラス
クラスの名前。
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 パラメーターで指定されたクラスの "種類" ではないオブジェクトを指している場合、マクロは 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 になります。