Объект переменного размера не может быть инициализирован проблема в массиве - PullRequest
0 голосов
/ 24 апреля 2020

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

int main()
{
    int n=0;
    n=1;
    int a[n]={}, b[n]={};
    return 0;
}

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Длина массива должна быть известна во время компиляции. Либо

int a[1];

, либо

constexpr int n = 1;
int a[n];

В противном случае вам необходим массив Dynamic c, такой как контейнер std std :: vector.

0 голосов
/ 24 апреля 2020

Вы можете правильно инициализировать ваш массив с помощью std::fill_n, например:

std::fill_n(a, n, 0);
std::fill_n(b, n, 0);

или использовать std::vector, например:

std::vector<int> a(n);

Он будет инициализирован по умолчанию все элементы равны 0.

Или вы можете получить что-то вроде:

constexpr size_t n = 10;
int a[n]{};

Это также инициализирует все элементы равными 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...