0

我有 Shapes 类和 gShapes 向量。我正在像这样将对象形式向量写入文件。

char* str;
vector<Shape*>::iterator it;
for( it = gShapes.begin(); it != gShapes.end(); it++ )
{       
    str = reinterpret_cast<char*>(reinterpret_cast<void*>(*it));
    saveFile.write(str, sz);
}

在我在我的类中添加动态内存之前它工作得很好,现在这段代码将指针写入文件而不是数据。

4

1 回答 1

4

总是[除了在极其罕见的情况下,只是为了满足那些会指出那些极其罕见的情况存在的学究],当将数据存储到文件时,需要“序列化”数据 - 换句话说,存储在“平面”中格式 - 不是指针、引用或其他间接形式。

因此,如果您的 中有一个指针Shape,那么您需要“解开”该指针,就像您使用 aoperator <<为您的对象打印内容一样。

于 2013-04-16T00:10:32.060 回答