2014-10-06 55 views
0

我記得在Java中做了這樣的事情,但那是一段時間後,我知道你可以從沒有對象的類調用一個函數。但我不知道如何在類的頭文件和實現文件中實現它。基本上我一直在研究一個讀取文件的函數,並在數組的某些索引中設置變量。我知道靜態對象不能訪問非靜態對象。但我記得之前做過這樣的事情。使用沒有對象的類函數

int Person::readFile(Person person[], int counter) { 
ifstream infile; 
infile.open("People.txt"); 

while(!infile.eof()) { 
    infile >> person[counter].firstName >> person[counter].lastName >> person[counter].age >> person[counter].gender; 
    counter++; 
} 

infile.close(); 

return counter; 
} 

我希望它讀取前4個文件元素並將它們設置爲當前索引,然後轉到下一個數組索引。我打算讓它成爲一個單獨的函數,但是標準是在頭文件和實現文件中包含所有內容。它在我使用時運行良好

Person people[MAX_SIZE]; 
int i = 0; 
people[i].readFile(people, i); 

這是好的,因爲我敢肯定這是可以接受的。但我希望它像這些線中的任何一條。

readFile(people, i); 
Person::readFile(people, i); 

我覺得用對象來設置對象變量數組是沒有意義的。謝謝任何人的評論,如果有更好的方法,請讓我知道。

+0

爲了能夠做到這一點,該函數必須聲明爲「static」。 – CoryKramer 2014-10-06 16:11:53

+0

使'Person :: readFile'靜態。 – 0x499602D2 2014-10-06 16:11:53

+0

並從Person類中取出readFile()。爲此創建一個單獨的類PersonFiller。 OOP更正確。 – Kastaneda 2014-10-06 16:18:53

回答

1

可以在不使用相應類類型的對象的情況下訪問靜態成員函數。靜態成員函數只能訪問靜態成員變量。

+1

等靜態成員函數。 – 2014-10-06 16:26:14

相關問題