有没有办法在 C++ 中序列化一个类?我指的不是类的实例,而是类本身。反序列化时,我不知道要实例化哪个类来调用反序列化。我希望能够以某种方式确定所代表的类,实例化它的一个空实例,然后调用反序列化它。
编辑澄清:
我正在创建一个键值结构,其中每个键都有一个强类型值。(一些键必须存储字符串,其他键必须存储整数,还有一些键可能存储任意值)。我设计了一个系统,由编译器通过模板强制执行。
Key 类有两个模板参数:
- UniqueClass - 每个概念应该有一个唯一的类(通常在定义概念的预处理器函数中定义)
- ValueType - 这是该概念的值必须是的类
Value 类是一个模板类,只有 ValueType 有一个抽象超类,因此我可以在其中包装任何类(类似于 boost::any)。
然后在我的键值结构中,我存储和检索使用 ConceptType 和 ValueType 模板化的函数:
template<UniqueClass, ValueType>
void store( Concept<UniqueClass, ValueType> concept, ValueType value );
因为我使用相同的模板来描述概念的值类型和传入的值,所以如果它们不匹配,编译器会报错。
我现在希望能够序列化键值存储。因此,我需要以某种方式序列化模板化的 Concept 类,然后在反序列化期间实例化正确的任意类。
我有它,以便我可以调用序列化并要求所有适当的对象序列化自己,我只是不知道在反序列化期间要实例化哪个类以要求反序列化自身。