我有一個指向基類對象的向量,所以我可以管理從該類派生的對象。保存指向文件的矢量對象
vector <Product*> products;
我試圖同時通過矢量 迭代這些對象寫入文件,但我不知道這是否正常工作。
void Inventory :: saveProductsToFile()
{
ofstream outfile;
outfile.open("inventory.dat",ios::binary);
list <Product*> :: iterator it;
for(it=products.begin(); it!=products.end(); it++)
outfile.write((char*)*(it),sizeof(Product));
}
的文件被創建,但我如果我很節約的實際對象本身或其 addresses.Is這是正確的或有另一種方式不知道?
這是文件的樣子:
ˆFG " H*c \Âõ(œ@@pFG h*c b'v [email protected]
你能告訴我們這個函數被調用後的文件看起來像什麼嗎? –
派生類可能具有不同的大小,所以這不起作用。另外,如果有任何動態分配或包含動態分配內存的成員(如'std :: string'),它也將無法工作。 – hmjd
改爲使用'sizeof(* it)';是的,正如hmjd提到的,如果你的類包含指針,它們必須在串行化之前調試 – Paranaix