動態生成
開始着手剖析動態生成的實現
有了類別型錄網,就可以開始着手解決棘手的動態生成問題。動態生成的困難點在於你沒有辦法在程序執行期間,根據動態獲得的一個類別名稱(通常是讀檔),要求程序產生一個對象。如果我們能夠把類別的大小記錄在類別型錄中,把構造函數(CruntimeClass::CreatObject)也記錄在類別型錄中,當程序在執行期間獲得一個類別名稱,它就可以在類別型錄中找出對應的元素,然後調用其構造函數(這裏所指的並非是C++中的構造函數),產生出對象。
因此可在CRuntimeClass中加以改進下,新的數據結構如下:
因此如果有一下語句,就可以組織成一棵大樹
其中凡是m_pfnCreateObject不爲NULL者,即可動態生成。圖中CFrameWnd和CWnd即可動態生成。
注:其實動態生成技術是爲了下文的Serialize技術做鋪墊。