我一直在從二進制文件中讀取SRD對象的數組 - 但由於這是我第一次這樣做,我修改了一個頭部,使其所有成員都公開,因爲我不確定會發生什麼正在繼續。我完成了我的任務,剩下的就是讓這些成員保持私密,並編寫修改它們的方法。但是,有一個問題。 爲了調試的目的,我只把一個成員私人,直到我爲它寫所有的方法,我會保持這種方式。這個成員只是一個無符號整數C.當寫一個返回它的方法(getC()返回C)時,它返回值爲0000 ... 3435973836,這意味着它沒有被設置? 因此,我有一個基於二進制文件中的對象數創建的SRD指針數組。從二進制數據中讀取對象
SRD *a;
...
a = new SRD[numOfRecords];
和數組從文件中充滿...
for (i=0; i<numOfRecords; i++)
{
f.seekg(i * sizeof s);
f.read((char *)&a[i], sizeof s);
cout << a[i].getCC();
}
現在
,a[i].getCC()
作品當C是公開的,但是使它私人品牌000..3435 ... 意義訪問它是不是問題,但它不是在前面for循環的fread中設置的。我想我需要一些類型的賦值運算符,即設置這些值,但我不知道...
你能寫一個簡單的例子,簡單說一個1成員類如何做到這一點? – 2012-08-11 19:17:20
添加示例,希望它有幫助。 – Reunanen 2012-08-11 20:27:04
實際上,問題是另外一件事:標題是按特定順序定義的,第一個成員是一個數組,而C是第二個成員,而在調試時,我首先用C開始 - 並將它從第二個位置移動到第二個位置以上的公衆,改變了班級的結構。 so, P類 { int i; char c; } 從 P類 { 炭Ç不同; int i; } 由於二進制文件中的數據具有特定順序,並且在重新排列類defenition的順序時,成員(c)嘗試訪問用於另一個成員(i)的數據, – 2012-08-12 01:53:26