c++ - 如何确定另一个结构中的结构数组的长度

标签 c++ arrays

我正在尝试编写一个函数,该函数作用于一个结构的成员,该结构位于一个结构数组中,该数组是另一个结构的成员:)。我需要做的第一件事是找出结构数组的长度,但我一直收到错误 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()
    {}
};

构造函数确保 gpanClasses 将被归零。

因为它们是内置类型,否则无法保证(根据您不为不使用的内容付费的原则,所以这是的决定)。

关于c++ - 如何确定另一个结构中的结构数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170225/

相关文章:

c - 如何使用命令行参数仅读取唯一行?

java - 字节数组 -> 字符串 -> 加密文本的字节数组 : not the same size

c - 使用结构数组在 C 中进行选择排序,错误 : "lvalue required..."

c++ - 删除 char** 数组的正确方法

c++ - 数组结构的 MPI-3 共享内存

c++ - 两次声明纯虚函数是否完全合法(在层次结构中的两个类中)

C数组指针段错误

javascript - 当索引满足另一个条件时,查找Javascript数组元素的值和索引

c++ - 多线程导致Qt运行时报错

android - 从 Play 商店更新我的应用程序后,如何在 Android 上保存 QSettings 文件的内容以使其可读?