2014-10-06 110 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

相关问题