指定功能層級
這篇文章說明如何加入下列層級的功能,以您 CObject-衍生的類別:
執行階段類別資訊
動態建立支援
序列化支援
如需一般的說明CObject的功能,請參閱文件衍生、 cobject 的類別。
若要新增 run-time 類別資訊
衍生您的類別,從CObject中所述, 衍生、 cobject 的類別發行項。
使用DECLARE_DYNAMIC巨集儲存在您的類別宣告,如下所示:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
使用IMPLEMENT_DYNAMIC巨集,在實作檔 (。CPP) 裡的類別。 此巨集會做為引數名稱的類別和其基底的類別,如下所示:
IMPLEMENT_DYNAMIC( CPerson, CObject )
注意事項 |
---|
總是將放置於IMPLEMENT_DYNAMIC在實作檔 (。CPP) 為您的類別。IMPLEMENT_DYNAMIC巨集會應該只評估一次編譯期間,因此不應在介面檔 (。H) 可能無法包含在一個以上的檔案。 |
若要加入動態建立支援
衍生您的類別,從CObject。
使用DECLARE_DYNCREATE在類別宣告中的巨集。
定義一個建構函式中的沒有指定引數 (一個預設建構函式)。
使用IMPLEMENT_DYNCREATE類別實作檔中的巨集。
若要加入序列化支援
衍生您的類別,從CObject。
覆寫Serialize成員函式。
注意事項 如果您呼叫Serialize直接,也就是您不希望將序列化物件,可透過多型指標、 跳過步驟 3 到 5。
使用DECLARE_SERIAL在類別宣告中的巨集。
定義一個建構函式中的沒有指定引數 (一個預設建構函式)。
使用IMPLEMENT_SERIAL類別實作檔中的巨集。
注意事項 |
---|
「 多型指標 」 指向物件的類別 (稱它為 A),或是衍生自 (例如,B) 的任何類別的物件。若要將序列化透過多型指標,其架構必須決定它正在序列化 (B),因為它可能是衍生自某些基底類別 (A) 的任何類別的物件之物件的執行階段類別。 |
如需詳細資訊,當您在衍生類別中的啟用序列化的CObject,請參閱文件檔案,在 MFC 中的和序列化。