次の方法で共有


ランタイム オブジェクト モデル サービス

更新 : 2007 年 11 月

CObject クラスと CRuntimeClass クラスは、ランタイム クラス情報へのアクセス、シリアル化、オブジェクトの動的作成などの複数のオブジェクト サービスをカプセル化します。CObject クラスから派生したすべてのクラスは、この機能を継承します。

ランタイム クラス情報にアクセスすることにより、実行時にオブジェクトのクラスについての情報を確認できます。関数の引数の特別な型チェックが必要なときや、オブジェクトのクラスに基づく特別な目的のコードを作る必要があるときは、実行時にオブジェクトのクラスを確認できると便利です。ランタイム クラス情報は、C++ 言語では直接サポートされていません。

シリアル化とは、オブジェクトの内容をファイルに書き込んだり、ファイルから読み取ったりする処理のことです。シリアル化を使うと、アプリケーションが終了した後でもオブジェクトの内容を保存できます。その後、アプリケーションが再実行されたときに、オブジェクトをファイルから読み込むことができます。このようなデータ オブジェクトを "永続化された" オブジェクトと呼びます。

オブジェクトの動的作成では、指定するクラスのオブジェクトを実行時に作成できます。たとえば、ドキュメント、ビュー、およびフレーム オブジェクトはフレームワークにより動的に作られる必要があるため、動的生成がサポートされる必要があります。

ランタイム クラス情報、シリアル化、および動的生成をサポートする MFC ライブラリのマクロの一覧を次の表に示します。

これらのランタイム オブジェクト サービスとシリアル化の詳細については、「ランタイム クラス情報へのアクセス方法」を参照してください。

ランタイム オブジェクト モデル サービス マクロ

DECLARE_DYNAMIC

ランタイム クラス情報へのアクセスを可能にします。クラスの宣言の中で使用する必要があります。

DECLARE_DYNCREATE

動的生成、およびランタイム クラス情報へのアクセスを可能にします。クラスの宣言の中で使用する必要があります。

DECLARE_SERIAL

シリアル化、およびランタイム クラス情報へのアクセスを可能にします。クラスの宣言の中で使う必要があります。

IMPLEMENT_DYNAMIC

ランタイム クラス情報へのアクセスを可能にします。クラスの実装の中で使用する必要があります。

IMPLEMENT_DYNCREATE

動的生成、およびランタイム クラス情報へのアクセスを可能にします。クラスの実装の中で使用する必要があります。

IMPLEMENT_SERIAL

シリアル化、およびランタイム クラス情報へのアクセスを可能にします。クラスの実装の中で使用する必要があります。

RUNTIME_CLASS

指定されたクラスに対応する CRuntimeClass 構造体を返します。

OLE では、多くの場合、実行時のオブジェクトの動的生成を必要とします。たとえば、OLE サーバー アプリケーションは、クライアントからの要求に対して動的に OLE 項目を作成できることが必要です。同様に、オートメーション サーバーは、オートメーション クライアントからの要求に対して動的に項目を作成できることが必要です。

Microsoft Foundation Class ライブラリには、2 つの OLE 専用マクロが用意されています。

OLE オブジェクトの動的な作成

DECLARE_OLECREATE

OLE オートメーションによるオブジェクトの作成を可能にします。

IMPLEMENT_OLECREATE

OLE システムによるオブジェクトの作成を可能にします。

参照

概念

MFC マクロとグローバル