我有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);
}
在我的类中添加动态内存之前,它工作正常,现在这段代码将指针写入文件而不是数据。
答案 0 :(得分:4)
始终[除了非常罕见的情况,只是为了满足指出那些极少数情况的学生],当将数据存储到文件时,数据需要“序列化” - 换句话说,存储在“扁平”格式 - 不是指针,引用或其他间接形式。
所以,如果你的Shape
中有一个指针,那么你需要“解开”那个指针,就像你使用operator <<
为你的对象打印内容一样。