随着软件的更新,输入数据的格式可能会从版本1更改为2,3等等。该软件希望能够兼容。编码时如何处理这些不同的版本?
例如,我有一个类Data
,它有一些成员变量。来自文件的Read
数据用于指定那些成员变量。在新版本中,类Data
具有更多成员变量。要使后向兼容,新成员变量在读取旧版本数据时具有默认值。如何实现呢?
答案 0 :(得分:2)
在数据文件的标题(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。标头是一个简单的数据块,通常具有已知的固定大小并位于数据文件的开头。