如何将结构定义为结构成员?

时间:2019-04-03 23:52:42

标签: c++ struct

我正在尝试将一个具有其他结构的结构定义为该结构的成员,但是我不确定如何做到这一点。到目前为止,我拥有的代码如下:

typedef struct name
{

    char fname[15];
    char lname[15];

} Name;

typedef struct info
{

    int grade;
    char phone[13];

} Info;

typedef struct mark
{

    int math;
    int sci;
    int eng;

} Mark;

typedef struct student
{

    Name n;
    Info i;
    Mark m;

} Student;

int main()
{

    Student class_list[30] = { };

}

1 个答案:

答案 0 :(得分:2)

如果您的问题是如何初始化数组,则答案如下:

Student class_list[2] = {
    {{"John", "Doe"}, {8, "000-555-000"}, {1, 2, 3}},
    {{"Jane", "Doe"}, {10, "000-555-001"}, {10, 8, 10}},
};

之所以这样工作,是因为您的类是聚合类,因此您可以使用aggregate initialization

好吧,我初始化了一个由2个元素组成的数组。您可以看到语法。


程序的一些要点。 typedef struct的方式是C习语。在C ++中,您不需要它,因此请将所有定义更改为:

struct Name
{
    char fname[15];
    char lname[15];
};

另外,您应该使用std::array而不是C数组:

std::array<Student, 3> class_list {{
    {{"John", "Doe"}, {8, "000-555-000"}, {1, 2, 3}},
    {{"Jane", "Doe"}, {10, "000-555-001"}, {10, 8, 10}},
}};