具有多种类型的类数组?如何访问数组中的一个类型
Class array with multiple types? How to access one type in the array?
这是我代码的一小部分:
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
它将是">
相关文章:
- 声明C++具有动态大小的数组类型在 Linux 中工作正常,但不能在 Windows 中工作
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 取消引用结束指针到数组类型的一个
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 如何在数组类型的模板代码中计算std::size_t
- LLVM 无法将数组类型强制转换为常量数组
- 推荐的方法在不初始化值的情况下使数组类型为 std::unique_ptr?
- 特征:从数组类型中获取标量类型是否记录?
- T D[N] 总是声明数组类型的对象吗?
- 如何在模板中推断数组类型?
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 如何为所有非数组类型专门化模板?
- 数组类型 (C++) 的初始化
- 我预测char数组类型值只能投射指针类型
- 将数组类型更改为 Int16 会节省存储空间吗?
- 采用通用数组类型的函数
- 数组类型 'int [8]'不可分配
- 数组类型 'float [size]'不可分配
- C++。候选模板被忽略 - 无法将数组类型与自身匹配