我写向量的内容到一个文件通过迭代器文件作为休耕写作载体,以提领迭代器
for(vector<Student>::iterator itr=vec.begin();itr!=vec.end();itr++){
out.write((char*)itr,sizeof *itr);
}
它给编译时错误,因为没有合适的转换功能exists.But当我提领ITR并采取其地址如下
out.write((char*)&(*itr),sizeof *itr);
其工作正常。 那么为什么我在这里不能直接使用itr?为什么我需要解除引用并再次使用它的地址?
解除引用'itr'为您提供'Student',而不是指针。 – juanchopanza 2014-09-23 19:13:27
这是序列化对象的错误方法。特别是,如果您的对象具有任何虚拟成员,稍后读取对象将导致具有不良vtable的对象。 – cdhowie 2014-09-23 19:16:59
您必须编写一个函数逐个输出每个成员。抱歉。 – 2014-09-23 19:19:15