我寫向量的內容到一個文件通過迭代器文件作爲休耕寫作載體,以提領迭代器
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