这是我的代码的一小部分:
class Student
{
private:
string ID, fname, lname, level;
double gpa;
}
所以,让我们说我创建了一个类型为Student的数组,有没有办法只访问double' gpa'每个数组元素?不完全确定如何做到这一点。任何帮助,将不胜感激。我需要学习如何更好地谷歌,因为我觉得这不应该太难以查找,但我仍然无法找到我想要的东西。
答案 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
它将是`