当我将函数放入主体时,它说: 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])'
我已经搜索了此错误,但没有发现任何错误,而且我还没有学会如何在学校解决此问题
它应该启动并开始显示不断演变的《生命游戏》地图
答案 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 */