使類別支援流式 I/O 並具備版本相容性,需定義 SaveToStream/LoadFromStream 並引入版本號機制。
class TSome {
private:
int num;
double sum;
public:
void SaveToStream(TStream* stream) {
TDataIO<int>(0x10001) >> stream; // 版本 1.1
TDataIO<int>(num) >> stream;
TDataIO<double>(sum) >> stream;
}
void LoadFromStream(TStream* stream) {
int ver = TDataIO<int>() << stream;
if (ver == 0x10001) {
num = TDataIO<int>() << stream;
sum = TDataIO<double>() << stream;
} else if (ver == 0x10002) {
// 處理舊版本...
}
}
};
0x10001 表示 1.1)。TDataIO 為簡化流讀寫的輔助模板(參考「流類別 I/O 簡化處理」)。此模式適用於 C++Builder VCL 流架構,核心思想為「版本號 + 條件式反序列化」。