2015-07-19 72 views
0

所以我必須共享指針的向量,以員工的目標對象的地址:C++的ofstream寫入文件中的值不

static std::vector<std::shared_ptr<Employee>> myVector; 

我想寫我已經存儲在那裏的員工對象一個文件:

ofstream myFile; 
myFile.open("test.bin", ios::binary); 

if (file_out.is_open()){ 
    file_out << myEmployee.myVector[0] << endl;//works just fine i get 0057BCC8 
    file_out << *myEmployee.myVector[0] << endl;//deference doesnt show anything 
} 

如何取消引用以獲取我的oject值?

+0

是員工的實際可打印? – methode

+0

你有一個指針向量。 'myEmployee.myVector [0]'是一個指針。 '* myEmployee.myVector [0]'是它指向的內容。 –

回答

0

OKAY最後我發現我很愚蠢,我忽略了這一點。是的,員工可以打印出來,因爲我超載了運營商< <,但這不是我的問題。

因爲我的矢量持有共享指向Employee對象我必須使用 - >運算符,像這樣

if (file_out.is_open()){ 
     for (std::vector<int>::size_type i = 0; i != myEmployee.myVector.size(); i++){ 
      file_out << myEmployee.myVector[i]->name << endl; 
      file_out << myEmployee.myVector[i]->id << endl; 

....

+0

您可能想檢查您的'<<'重載,因爲'file_out << * myEmployee.myVector [0] << endl;'應該已經工作 – user4581301

相關問題