我正在努力解决的问题如下:写一个包含字段的学生班:name
,ID
,age
,course
和成员函数{ {1}},getName()
,getID()
和getAge()
,它们返回属性的值。创建一个Student数组并填充动态声明的数组。
我认为我应该自己尝试但是我对此非常陌生这就是我得到的,它有很多错误我认为这是因为我是一个菜鸟。非常感谢帮助:
getCourse()
答案 0 :(得分:0)
首先,c ++中的类以';'结尾,你的班级学生的定义错过';'。
除语法错误外,我还有3条建议:
首先,使用const类型&(不能修改引用对象的通用引用)而不是pass-by-value for pass-by-value需要复制参数,并且类型很昂贵比如字符串。这也适用于函数的返回类型get *
其次,你的班级学生没有任何构造函数。你如何初始化它?
第三,你可以增加你定义的成员函数名称的相似度吗?这很难
你的for循环应该用{}括起来。
由于您私有地设置了类中的所有数据成员,如何在不调用已定义的成员函数的情况下在类外部访问它?(默认情况下,除非您编写“public”,否则任何跟随类的成员都是私有的:“)
函数ReadData中发生相同的错误。
在ReadData和main的定义之间,有一个's'。
我建议您使用运算符重载函数(重载运算符>>)而不是定义ReadData
#include <iosfwd>
#include <cstdint>
template <std::size_t n>
std::istream& operator >>(std::istream &in, student &stu[n]) {
for (int i=0; i != n; ++i) {
string Name, course;
int age;
double ID;
in >> Name >> ID >> age >> course;
//If you have defined the constructor I told you above
stu[i] = student(Name, ID, age, course);
//The code below will actually have performance lose
//if you don't enable compiler optimization, excspt in c++17
//which such copy elision is mandatary
}
return in;
}