簡體   English   中英

C ++ MFC序列化

[英]C++ MFC Serialization

我需要序列化指向基類和派生類的指針的向量。 這兩個類都重載了序列化函數,所以我成功地做到了:

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讀取對象時調用正確的構造函數...

首先,您需要保存容器中元素的數量(使用ar.WriteCount )。 然后(由於容器中包含多種類型),您序列化的每個元素都需要包括額外的數據以告訴您該元素的類型是什么。 這可能只是一個額外的字符(0 =基類,1 =第一個派生類),另一個計數類型編號(用WriteCount編寫),或者更復雜的類型名稱。

要讀回它,您要讀取元素計數(使用ar.ReadCount ),然后對於每個要讀入的元素,您都要讀取類型字符,計數或其他內容,分配該類型的新元素,反序列化為新分配的元素,最后將分配的元素存儲到您要反序列化的容器中。

為了從MFC容器轉換為STL容器,我需要做很多類似的事情,並且MFC容器(在<afxtempl.h> )使用的Serialize的實現非常有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM