Я не могу конвертировать '2D array whit bool' в 'void 2D array bool' (для игры в жизнь) - PullRequest
0 голосов
/ 08 мая 2019

Когда я помещаю свои функции в основную, он говорит, что: 73 44 C: \ Users \ Gaia \ OneDrive \ Documents \ Gameoflife.cpp [Ошибка] не может преобразовать 'bool () [g]' в 'bool() [20] 'для аргумента' 1 'в' void cambiamentoMappa (bool () [20]) '74 39 C: \ Users \ Gaia \ OneDrive \ Documents \ Gameoflife.cpp [Ошибка] не можетпреобразовать 'bool () [g]' в 'bool () [20] "для аргумента" 1 "в" void ScambioMappa (bool () [20], bool (*) [20]]) '

Я искал эту ошибку, но ничего не нашел, и я не научился ее исправлять в школе

Она должна запуститься и начать показывать эволюцию карты Game of Life

Ответы [ 2 ]

3 голосов
/ 08 мая 2019

TL; DR : ваш код неверен.Ваш компилятор принимает некоторые плохо сформированные части вашего кода как расширение, но это, в свою очередь, запускает другие неправильно сформированные конструкции.


Ваш код содержал следующую строку:

const int g = 20;

Позже, в функции main, ваш код включал следующую строку:

int g;

Последняя shadows первая.Затем вы попытались объявить массив:

bool MatriceA[g][g];

В C ++ размерность массива должна быть константным выражением.Здесь g - это переменная, которая не является константным выражением.Массивы переменной длины не разрешены в C ++.Следовательно, ваш код некорректен.


Поскольку вы используете Dev-C ++ IDE , вы, вероятно, используете компилятор GCC .GCC принимает массивы переменной длины в качестве расширения.Но тогда ваш код тоже не компилируется.

Ваши функции принимают bool MatriceA[g][g] в качестве параметра функции.В это время действует const int g = 20;.Следовательно, ваш параметр функции действительно bool MatriceA[20][20], что действительно bool (*MatriceA)[20] из-за затухания параметра функции (см. Вопрос переполнения стека Что такое распад массива? ).

Тогда вывызов функции с массивом переменной длины.Это не разрешеноПоэтому ваш код отклонен.

0 голосов
/ 08 мая 2019

Вы вызываете свою функцию cambiotoMappa с двумя параметрами, MatriceA и MatriceB

cambiamentoMappa(MatriceA, MatriceB);         /* Two actual parameters */

Но ваша функция принимает только один параметр

void cambiamentoMappa(bool MatriceA[g][g])    /* One formal parameter */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...