Как определить структуры как члены структур? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь определить структуру с другими структурами как членами этой структуры, но я не уверен, как это сделать.Код, который у меня есть, выглядит следующим образом:

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 Ответ

2 голосов
/ 04 апреля 2019

Если ваш вопрос заключается в том, как инициализировать массив, то ответ будет таким:

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

Причины, по которым он работает так, в том, что ваши классы являются агрегатами, поэтому вы можете использовать агрегатная инициализация .

Ну, я инициализировал массив из 2 элементов.Вы можете увидеть синтаксис.


Некоторые пункты для вашей программы.Путь typedef struct - это идиома.В 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}},
}};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...