具有多种类型的类数组?如何访问数组中的一种类型?

时间:2017-04-07 18:09:03

标签: c++ arrays class

这是我的代码的一小部分:

class Student
{
    private:
        string ID, fname, lname, level;
        double gpa;
}

所以,让我们说我创建了一个类型为Student的数组,有没有办法只访问double' gpa'每个数组元素?不完全确定如何做到这一点。任何帮助,将不胜感激。我需要学习如何更好地谷歌,因为我觉得这不应该太难以查找,但我仍然无法找到我想要的东西。

2 个答案:

答案 0 :(得分:3)

如果您有阵列

std::array<Student, 10> students;

你可以说

for (auto const& student : students)
{
    std::cout << student.gpa << " ";
}

显然,您也可以为任意元素执行此操作

students[i].gpa = 4.0;

当然,如果指定了public

,您必须确保使用private方法来访问这些成员
class Student
{
public
    Student() = default;
    Student(double _gpa) : gpa(_gpa) {}

    double get_gpa() const { return gpa; }
    void set_gpa(double _gpa) { gpa = _gpa; }

private:
    double gpa = 0.0;
}

然后

students[i].set_gpa(4.0);

答案 1 :(得分:0)

我看到CoryKramer向您展示了如何使用std::array,但如果您只想使用普通数组,那么您应该做以下事情:

#include <cstdio>
#include <string>

class Student
{
public:
  double get_gpa() {return gpa;}
  void set_gpa(double _gpa) {gpa=_gpa;}
private:
  std::string ID, fname, lname, level;
  double gpa;
};

int main() {
  Student a[30];
  //Initialize
  for(int i = 0; i < 30; i++) {
    a[i].set_gpa((double)i/7.5);
  }
  //Print out
  for(int i = 0; i < 30; i++) {
    printf("a[%i].gpa = %f\n",a[i].get_gpa());
  }
}

基本上你只需要Student a[30];来创建一个数组中的30个学生,然后你可以将它们的值初始化为for循环或来自&#34;教师&#的输入34; 。最后,您可以使用另一个for循环打印它们,如下所示:printf("%f\n",a[i].get_gpa());std::cout它将是`