我有 2 个单独的代码文件。一个是主文件,一个是包含函数的文件。
代码可以在下面查看:
学生.cpp
Student::Student(const string &name, int regNo) : Person(name)
{
map<string, float> marks;
this->name = name;
this->regNo = regNo;
}
int Student::getRegNo() const
{
return regNo;
}
void Student::addMark(const string& module, float mark)
{
map<string, float>::const_iterator it;
marks.insert(make_pair(module, mark));
for (it = marks.begin(); it != marks.end(); it++)
{
if(it->second !=0){
marks[module] = mark;
}
}
}
主文件
Student stud(name, i);//this is what I want to do
if(wordfile.is_open() && file2.is_open())
{
if(!wordfile.good() || !file2.good())
{
cout << "Error reading from file. " << endl;
}
while(wordfile.good())
{
getline(wordfile, s1);
istringstream line(s1);
line >> i;
line >> name;
Student stud(name, i);
cout << stud.getRegNo() << endl;
itR.push_back(stud.getRegNo());
vS.push_back(stud);
}
wordfile.close();
while(file2.good())
{
getline(file2, s2);
istringstream line(s2);
line >> reg;
line >> mod;
line >> mark;
stud.getRegNo();
}
file2.close();
}
}
我理想中想要做的是使用我的构造函数student.cpp
来创建一个student
对象。然后,我希望能够在 main 中的任何位置调用 student.cpp 中的函数。但是,我需要提供给构造函数的值来自我的代码中名为“wordfile”的文件。因此Student stud(name, i);
在寻找“wordfile”的同时被调用。但是,然后我希望在 while 循环中为“file2”调用“stud.getRegNo()”,但这当然是不允许的。由于 stud 被用作局部变量,因此它的范围没有那么远。
所以我的问题是,无论如何我可以执行我想做的事情吗?也许通过初始化然后Student stud
调用?或类似的规定?stud(name, i)
stud.getRegNo()