1

您好,我今年 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 之前表示预期的主表达式。

4

3 回答 3

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;
}
于 2012-02-15T02:25:11.593 回答
2

调用函数时无需提供类型名称。

if (checkverticle(char grid[3][3], char player) // Remove char here and in other cases

关于你得到的进一步错误 -

checkverticle( grid[3][3] ... )

此处grid[3][3]为您提供该索引处的字符。正如其他人所建议的那样,您真正想要传递的是grid它本身。当然,要小心有效的数组索引。

于 2012-02-15T02:24:11.457 回答
1

您正在尝试将类型声明作为参数传递。试试这个:

bool checkifwin(char grid[3][3], char player)
{
  return checkverticle(grid], player) || 
    checkhorizontal(grid, player) || 
    checkdiagonal(grid, player;

};
于 2012-02-15T02:26:40.177 回答