使用学生班填充数组

时间:2017-12-14 15:06:16

标签: c++

我正在努力解决的问题如下:写一个包含字段的学生班:nameIDagecourse和成员函数{ {1}},getName()getID()getAge(),它们返回属性的值。创建一个Student数组并填充动态声明的数组。

我认为我应该自己尝试但是我对此非常陌生这就是我得到的,它有很多错误我认为这是因为我是一个菜鸟。非常感谢帮助:

getCourse()

1 个答案:

答案 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;
}