2013-04-16 44 views
0

我有Shapes類和gShapes向量。 我正在寫對象形式向量來這樣的文件。將數據從矢量寫入文件。 C++

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); 
} 

這是工作完美,直到我在類中添加動態內存,現在該代碼文件中未寫入數據的指針。

+1

你需要完全序列化你的對象。例如:http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/index.html – Chad

回答

4

總是[除了極少數情況下,只是爲了滿足那些指出那些極端罕見情況的學生],當將數據存儲到文件時,數據需要被「序列化」 - 換句話說,存儲在一個「平面」格式 - 不是指針,引用或其他間接形式。

因此,如果您的Shape中有指針,那麼您需要「解開」該指針,就像使用operator <<爲對象打印內容一樣。

+0

哦,我不知道,在一些罕見的情況下,你可以寫出指針,整個結構等寫作和閱讀你在同一個應用程序中編寫的內容) – David

+1

現在好了嗎?我必須承認,除了這個奇怪的錯誤之外,我認爲我已經在30多年的時間裏寫了一個指向某個文件的指針,我已經爲了生活和業餘愛好編寫代碼。 –

+0

指針可以轉換爲文件偏移量。 –