我无法将“ 2D阵列白色布尔”转换为“无效的2D阵列布尔”(用于游戏)

时间:2019-05-08 10:34:42

标签: c++ function

当我将函数放入主体时,它说: 73 44 C:\ Users \ Gaia \ OneDrive \ Documents \ Gameoflife.cpp [错误]无法将参数'1'的'bool()[g]'转换为'bool()[20]'到“ void cambiamentoMappa(bool()[20])” 74 39 C:\ Users \ Gaia \ OneDrive \ Documents \ Gameoflife.cpp [错误]无法将参数'1'的'bool()[g]'转换为'bool()[20]'到'void ScambioMappa(bool()[20],bool(*)[20])'

我已经搜索了此错误,但没有发现任何错误,而且我还没有学会如何在学校解决此问题

它应该启动并开始显示不断演变的《生命游戏》地图

2 个答案:

答案 0 :(得分:3)

TL; DR :您的代码格式不正确。 您的编译器接受代码的某些格式错误的部分作为扩展名, 但这又触发了其他格式错误的构造。


您的代码包含以下行:

const int g = 20;

稍后,在main函数中,您的代码包含以下行:

int g;

后者阴影前者。 然后,您尝试声明一个数组:

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] (请参阅堆栈溢出问题What is array decaying?。)

然后您将使用可变长度数组调用该函数。 这是不允许的。 因此,您的代码将被拒绝。

答案 1 :(得分:0)

您正在使用两个参数MatriceA和MatriceB调用函数cambiotoMappa

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

但是您的函数仅接受一个参数

void cambiamentoMappa(bool MatriceA[g][g])    /* One formal parameter */