我正在尝试编写一个函数,该函数作用于一个结构的成员,该结构位于一个结构数组中,该数组是另一个结构的成员:)。我需要做的第一件事是找出结构数组的长度,但我一直收到错误 expression must be class type.
我获取这个数组长度的合适方法是什么? (PS. 该函数必须将Student
结构作为参数。)
结构:
struct Class
{
string title;
int units;
char grade;
};
struct Student
{
string name;
double gpa;
Class classes[500];
};
我的函数看起来像这样:
void gpaCalculate (Student s)
{
int size = s.classes.size() ;
//Lots of awesome code
}
最佳答案
代码
struct Student
{
string name;
double gpa;
Class classes[500];
};
表示 Student
最多可以参加 500 节课,这是一些学校作业,您需要/需要使用原始数组,而不是其他更合适的 std::vector
。
首先,魔数(Magic Number) 500 应该设为常量,如下所示:
int const maxClasses = 500;
然后在每个 Student
对象中,您需要存储该学生参加的实际类(class)数:
struct Student
{
string name;
double gpa;
int nClasses;
Class classes[maxClasses];
Student()
: name(), gpa( 0.0 ), nClasses( 0 ), classes()
{}
};
构造函数确保 gpa
和 nClasses
将被归零。
因为它们是内置类型,否则无法保证(根据您不为不使用的内容付费的原则,所以这是您的决定)。
关于c++ - 如何确定另一个结构中的结构数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170225/