2012-02-15 48 views
1

你好,我17岁,正在努力学习如何编写代码。我在调试这部分代码时遇到了麻烦,并希望得到一些帮助。检查Tic-Tac-Toe的运行状况

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之前预期的初级表达。

+0

可能是一个拼写错误,但是你在if语句后缺少一个右括号。 – sooper 2012-02-15 02:26:43

+1

只是美容 - 你拼错垂直。对不起,它困扰我:/ – Pochi 2012-02-15 02:34:48

+0

函数或方法声明的大括号后面不需要分号。 (类声明需要它们,但是...) – HostileFork 2014-10-03 06:21:26

回答

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; 
} 
2

调用函数时不需要指定类型名称。

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

关于错误的详细你 -

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

这里grid[3][3]为您提供了索引处的字符。正如其他人所建议的,你真正想要通过的是grid本身。当然,要小心有效的数组索引。

+0

噢好吧我摆脱了这些类型的名称,但现在它说'char'无效转换为'char(*)[3]' – 2012-02-15 02:26:54

+0

对不起,我认为它可能不得不做而其他代码在这个被调用的函数后生病了 – 2012-02-15 02:29:28

1

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

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

}; 
相关问题