Как создать массив Dynami c для элементов структуры различных типов переменных для C ++? - PullRequest
2 голосов
/ 13 февраля 2020

У меня есть следующая структура:

struct student {
   char *firstName;
   int exam1;
};

Остальная часть кода находится в основной функции. Я спрашиваю пользователя, сколько учеников у него в классе и хранит это в numStudents:

int numStudents;
cout << "How many students do you have in your class? ";
cin >> numStudents;

Теперь мне нужно создать массив Dynami c для хранения имени numStudents и спросить пользователя ввести имя и оценку экзамена для числа студентов, введенных ранее. Это код, который я до сих пор. Син работает. Но когда я пытаюсь вывести, система просто выходит.

student *ptr = new student[numStudents];

cout << "Enter name, exam1 for each student: ";
for(i = 0; i < numStudents; i++)
{
    cin >> ptr[i].name;
    cin >> ptr[i].exam1;
}
for(i = 0; i < numStudents; i++)
    {
        cout << ptr[i].name;
        cout << ptr[i].exam1;
    }

1 Ответ

2 голосов
/ 13 февраля 2020

ptr - это массив, а не ptr.name ... На самом деле вы обрабатываете свойства первого элемента в массиве, как если бы они были массивами. Но это не так. Вы должны изменить его на:

student *ptr = new student[numStudents]; 
cout << "Enter name, exam1 for each student: "; 
for(i = 0; i < numStudents; i++) 
{ 
    cin >> ptr[i]->name; 
    cin >> ptr[i]->exam1; 
}

Вы также можете прочитать больше об этом сообщении об ошибке в этом ответе

...