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

Class array with multiple types? How to access one type in the array?

本文关键字:数组 类型 访问 一个 种类 何访问      更新时间:2023-10-16

这是我代码的一小部分:

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

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

如果你有一个数组

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);

我看到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 = %fn",a[i].get_gpa());
  }
}

本质上,您只需Student a[30];在一个数组中创建 30 个学生,然后您可以使用 for 循环或来自"老师">的输入初始化他们的值以使其不同。最后,您可以稍后使用另一个 for 循环打印它们,如下所示:printf("%fn",a[i].get_gpa());或带有std::cout它将是">