随着软件的更新,输入数据的格式可能会从版本 1 变为 2、3 等。该软件希望向后兼容。编码时如何处理这些不同的版本?
例如,我有一个类Data
,它有一些成员变量。Read
来自文件的数据是指定那些成员变量。在新版本中,该类Data
有更多的成员变量。为了向后兼容,新成员变量在读取旧版本数据时具有默认值。如何实施?
在数据文件的标题(1) 中添加一个条目,指示它是哪个版本。当您访问文件时,请检查标题中的版本信息并使用适当的函数集来加载数据。
如果数据文件还没有某种类型的标题,您应该添加一个。
struct header
{
char signature_[16]; // some arbitrary data identifying it as your data file
int version_; // version number
// ... more data ...
};
header_ hdr;
ReadHeader(inFile, &hdr);
Data* data;
switch(hdr)
{
case 1: data = LoadVersion1Data(inFile); break;
case 2: data = LoadVersion2Data(inFile); break;
case 3: data = LoadVersion3Data(inFile); break;
}
1. 标头是简单的数据块,通常具有已知的固定大小并位于数据文件的开头。