您好我17岁,正在尝试学习如何编码。我在调试这部分代码时遇到了问题,并希望得到一些帮助。
bool checkifwin(char grid[3][3], char player)
{
if (checkverticle(char grid[3][3], char player)
|| checkhorizontal(char grid[3][3], char player)
|| checkdiagonal( grid[3][3], player)
return true;
else
return false;
};
它表示在char之前预期的primary-expression。
答案 0 :(得分:4)
checkverticle()是对函数的调用,而不是声明,所以你不需要“char”。
bool checkifwin(char grid[3][3], char player)
{
if ( checkverticle(grid, player) ||
checkhorizontal(grid, player) ||
checkdiagonal( grid, player) return true;
else return false;
};
只是一些编码建议。在我看来:
bool func()
{
if (expr)
return true;
else
return false;
}
不是很棒的风格。我建议将其重构为:
bool func()
{
bool result = false; // This just makes it clear the expected default.
// You could even go as far as
// bool result = expr or event return expr; - although I suggest sticking with a
// variable in case you need to debug.
result = expr; // e.g. result = checkVert() || checkHoriz() || checkDiag();
return result;
}
答案 1 :(得分:2)
调用函数时无需提供类型名称。
if (checkverticle(char grid[3][3], char player) // Remove char here and in other cases
进一步了解错误 -
checkverticle( grid[3][3] ... )
此处grid[3][3]
为您提供该索引处的字符。您真正想要传递的是grid
本身,正如其他人所建议的那样。当然,要警惕有效的数组索引。
答案 2 :(得分:1)
您正在尝试将类型声明作为参数传递。试试这个:
bool checkifwin(char grid[3][3], char player)
{
return checkverticle(grid], player) ||
checkhorizontal(grid, player) ||
checkdiagonal(grid, player;
};