0

随着软件的更新,输入数据的格式可能会从版本 1 变为 2、3 等。该软件希望向后兼容。编码时如何处理这些不同的版本?

例如,我有一个类Data,它有一些成员变量。Read来自文件的数据是指定那些成员变量。在新版本中,该类Data有更多的成员变量。为了向后兼容,新成员变量在读取旧版本数据时具有默认值。如何实施?

4

1 回答 1

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. 标头是简单的数据块,通常具有已知的固定大小并位于数据文件的开头。

于 2013-07-05T02:30:10.673 回答