我有一个基类和 4 个派生类。我将所有派生类存储在基类指针类型的向量中。在第一次初始化期间,我使用它们的构造函数以不同的方式创建每个派生类型。基本上,他们每个人的 ctor 中都有不同的参数类型。(我必须提供一个受保护的默认 ctor 才能使 BOOST_CLASS_EXPORT 编译,但这是另一回事)。我不/不能保存这些派生类的所有成员(用 ctor 填充)。
现在,当我使用 boost::serialize 从磁盘加载对象时,这些成员(未序列化并且特定于每个派生类型)被销毁。而且,我想不出重新初始化这些派生类型的方法,因为我只存储基类指针。
我真正需要的是能够部分加载我的派生类型(指针),而不删除它们的所有内容。
有没有办法克服这个问题,也许是一个神奇的提升定义或函数调用?否则,根本不可能使用 boost::serialize 进行多态性。我应该遗漏一些东西,希望我能足够好地定义我的问题。