我需要序列化指向基类和派生类的向量。 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