CObject からのクラスの派生
この技術情報では CObjectからクラスを派生させるために必要な最小限の手順について説明します。他の CObject のクラスの技術情報では、シリアル化および診断デバッグのサポートなどの CObject 特定の機能を利用するために必要な手順について説明します。
CObjectの説明では、用語は 「ファイル」インターフェイスを実装し、 「file」は頻繁に使用されます。インターフェイス (ファイル、ヘッダー ファイル、または呼び出されます。H ファイルは)クラスを使用するために必要なクラス宣言などの情報が含まれます。実装ファイル (.cpp ファイル)クラス定義を、クラス メンバー関数を実装するコードが含まれています。たとえば、クラスは CPersonという名前の、通常 PERSON.H という名前のインターフェイス ファイルを作成し、実装ファイルは PERSON.CPP があります。ただし、アプリケーション間で共有されないある小さなクラスでは、単一の .cpp ファイルにインターフェイスと実装を結合すると、簡単です。
クラスを CObjectから取得すると機能の 4 レベルから選択する場合:
基本機能: ランタイム クラス情報やシリアル化のサポートは、診断メモリ管理は含まれません。
ランタイム クラス情報の両方をサポートする基本機能。
ランタイム クラス情報と動的生成のサポートと基本機能。
ランタイム クラス情報、動的生成、およびシリアル化のサポートと基本機能。
基本クラスとして後で実行する再利用 (、)にデザインされたクラスは、後続のシリアル化の必要が予測される場合、ランタイム クラスのサポート、およびシリアル化のサポートを含める必要があります。
、 CObjectから派生したクラスの宣言と実装で特定の宣言と実装のマクロを使用してフィーチャーのレベルを選択します。
次の表は、サポート シリアル化、およびランタイム情報に使用されるマクロ間の関係を示します。
シリアル化、およびランタイム情報に使用するマクロ
使用されるマクロ |
CObject::IsKindOf |
CRuntimeClass:: CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
CObject の基本的な機能 |
X |
X |
X |
DECLARE_DYNAMIC |
○ |
X |
X |
DECLARE_DYNCREATE |
○ |
○ |
X |
DECLARE_SERIAL |
○ |
○ |
○ |
CObject の基本的な機能を使用するには
CObject からクラスを派生させるために標準 C++ の構文を使用します。 (または CObjectから派生したクラスから)。
次の例では、最も単純な場合、 CObjectからの派生クラスです:
class CSimple : public CObject { // add CSimple-specific members and functions... };
しかし、新しいクラスの設計を処理する entity_CODECObject のメンバー関数の一部をオーバーライドする場合もあります。たとえば、通常クラスのコンテンツにデバッグ出力を提供するために CObject の Dump 関数をオーバーライドする場合もあります。Dumpをオーバーライドする方法の詳細については、技術情報 診断: オブジェクトの内容のダンプを参照してください。また、クラス オブジェクトのデータ メンバーの一貫性を検証するには、カスタマイズしたテストを提供するように CObject の AssertValid 関数をオーバーライドする場合もあります。AssertValidをオーバーライドする方法の詳細については MFC ASSERT_VALID と CObject::AssertValidを参照してください。
技術情報 機能のレベルの指定 は、ランタイム クラス情報、動的オブジェクトの作成とシリアル化機能を含む他のレベルを指定する方法について説明します。