警告:控制可能到达非空函数的末尾[-Wreturn-type]}

时间:2016-11-25 13:13:51

标签: c++ chess

我是c ++的初学者,我正在尝试制作国际象棋游戏,当我编译时:

bool isValidMove(int inCol, int inRow, int outCol, int outRow, char board[8][8])
{
    if (board[inRow][inCol] == '-')
        return false;
    else
    {
        if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board))
            return true;
        if((board[inRow][inCol] == 'K' || board[inRow][inCol] == 'k') && isValidMoveKnight(inCol, inRow, outCol, outRow, board))
            return true;   
        if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board))
            return true;
    }
} 

我从编译器warning: control may reach end of non-void function [-Wreturn-type] }收到此警告 任何人都可以通过我在Mac上的方式帮助我解决这个问题。

2 个答案:

答案 0 :(得分:2)

else区块中,有一条路径可以返回任何内容。这就是你被警告的内容。

答案 1 :(得分:2)

如果不符合你的条件,你不会在最后返回任何东西。

bool isValidMove(int inCol, int inRow, int outCol, int outRow, char board[8][8]) {
     if(board[inRow][inCol] == '-') {
         return false;
 }
 else {
     if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board)) {
     return true;
         }
         if((board[inRow][inCol] == 'K' || board[inRow][inCol] == 'k') && isValidMoveKnight(inCol, inRow, outCol, outRow, board)) {
             return true;
         }   
         if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r')&&      isValidMoveRook(inCol, inRow, outCol, outRow, board)) {
             return true;
         }
     }
     // return something here
 }