2016-11-25 1 views
-3

Je suis un débutant en C++ et je suis en train de faire un jeu d'échecs et quand je compiler:avertissement: le contrôle peut atteindre la fin de la fonction non vide [-Wreturn type]}

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

Je reçois cet avertissement de mon compilateur warning: control may reach end of non-void function [-Wreturn-type] } quelqu'un peut-il m'aider avec ce problème par la façon dont je suis sur le mac.

+1

parce que votre fonction ne peut rien retourner (si aucun des '' if's dans la branche else' évaluer à'on'?) – UnholySheep

Répondre

2

Vous ne retournez rien à la toute fin si cela ne va pas dans vos conditions.

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

Dans votre bloc else, il y a un chemin à travers lequel rien n'est renvoyé. C'est ce dont vous êtes averti.

+0

pouvez-vous me dire quel chemin – Ian

+0

@UnholySheep a déjà commentaire à votre question. –

+0

Je ne comprends pas parce que if renvoie false et l'autre retourne true – Ian