Определения развернуты с препроцессором.Фактически, #define N 6
означает, что все вхождения N
в вашем коде будут заменены на 6
, таким образом, заменив cin >> N
на cin >> 6
.
Решение состоит в том, чтобы N
aпеременная:
int N;
cin >> N;
// do whatever you want with N
Однако обратите внимание, что в этом случае Person people[N]
является массивом переменного размера (то есть его размер неизвестен во время компиляции. Это нестандартный C ++, и вам следует избегатьВместо этого рассмотрите возможность использования vector - это в основном массив переменного размера из стандартной библиотеки.
cin >> N;
vector<Person> people(N);
...
cin >> people[i].name;