我需要序列化指向基類和派生類的向量。 Serialize函數重載兩個類,所以我做了它成功地這樣的:`C++ MFC序列化
CFile out;
if (!out.Open(filename.c_str(), CFile::modeWrite | CFile::modeCreate))
return false;
CArchive ar(&out, CArchive::store);
for (auto it = container_.begin(); it != container_.end(); ++it)
{
(*it)->Serialize(ar);
}
ar.Close();
out.Close();
因此問題是,我應該怎麼現在反序列化呢?在從CArchive中讀取對象時調用正確的構造函數沒有任何想法...
根本不調用構造函數。您只需使用CArchive類的'operator >>',並獲取指向完全構造的對象的指針(參見[通過存檔存儲和加載CObjects](https://msdn.microsoft.com/zh-cn/ /library/3bfsbt0t.aspx))。但是,存儲矢量的方式使其無法恢復:您錯過了元素的數量,因此在重新讀入檔案時,您不知道何時停止閱讀其他元素。你必須先寫數。使用MFC容器類自動執行所有這些。 – IInspectable