source.cpp:LINE:COL: error:这里不允许定义函数
source.cpp:LINE:COL: error: function definition is not allowed here
我是c++的初学者,我正在尝试制作一个尚未完成的国际象棋游戏。当我尝试编译下面的代码时,它给了我错误:这里不允许定义函数。for isValidMove, movePiece和Main谁能告诉我为什么会这样?
代码是:
#include <iostream>
#include <string>
#include <stdlib.h>
#include <ctype.h>
#include <cmath>
#include <algorithm>
using namespace std;
char board[8][8] = {
'R','N','B','Q','K','B','N','R',
'P','P','P','P','P','P','P','P',
'-','-','-','-','-','-','-','-',
'-','-','-','-','-','-','-','-',
'-','-','-','-','-','-','-','-',
'-','-','-','-','-','-','-','-',
'p','p','p','p','p','p','p','p',
'r','n','b','q','k','b','n','r'};
void swap(char board[8][8], int inRow, int inCol, int outRow, int outCol) {
char tmp = board[inRow][inCol];
board[inRow][inCol] = board[outRow][outCol];
board[outRow][outCol] = tmp;
}
void printBoard(char board[8][8]) {
cout << "# a b c d e f g h " << endl;
for(int i = 0; i <= 7; i++) {
cout << 8 - i << " ";
for(int j = 0; j <= 7; j++) {
cout << board[i][j] << " ";
}
cout << endl;
}
}
bool isValidMoveRook(int inCol, int inRow, int outCol, int outRow, char board[8][8]) {
int smallCol = min(inCol, outCol);
int smallRow = min(inRow, outRow);
int maxCol = max(inCol, outCol);
int maxRow = max(inRow, outRow);
if(inRow == outRow) {
for(int i = smallCol + 1; i < maxCol; i++) {
if(board[inRow][i] != '-') {
return false;
}
}
return true;
}
else if(outCol == inCol) {
for(int i = smallRow + 1; i < maxRow; i++) {
if(board[i][inCol] != '-') {
return false;
}
}
return true;
}
else {
return false;
}
}
bool isValidMoveBishop(int inCol, int inRow, int outCol, int outRow, char board[8][8]) {
int rowDiff = outRow - inRow;
int colDiff = outCol - inCol;
if(abs(outRow - inRow) == abs(outCol - inCol)) {
if(rowDiff < 0 && colDiff < 0) {
for(int i = 1; i > rowDiff; i--) {
if(board[inRow + rowDiff][inCol + rowDiff] != '-') {
return false;
}
}
}
}
else {
return true;
}
}
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;
}
}
}
void movePiece(char board[8][8]) {
string input;
string output;
cout << "Please enter your piece position : ";
cin >> input;
cout << "Please enter where you want to place your piece : ";
cin >> output;
int inCol = input[0] - 'a';
int inRow = 7 - (input[1] - '1');
int outCol = output[0] - 'a';
int outRow = 7 - (output[1] - '1');
while(!isValidMove(inCol, inRow, outCol, outRow, board)) {
cout << "Invalid input try again" << endl;
cout << "Please enter your piece position : ";
cin >> input;
cout << "Please enter where you want to place your piece : ";
cin >> output;
inCol = input[0] - 'a';
inRow = 7 - (input[1] - '1');
outCol = output[0] - 'a';
outRow = 7 - (output[1] - '1');
}
if(board[outRow][outCol] == '-') {
swap(board, inRow, inCol, outRow, outCol);
}
else {
if(isupper(board[inRow][inCol]) != isupper(board[outRow][outCol])) {
board[outRow][outCol] = board[inRow][inCol];
board[inRow][inCol] = '-';
}
}
}
int main() {
printBoard(board);
while (true) {
movePiece(board);
printBoard(board);
}
}
您在isValidMoveBishop
中缺少闭合的}
。因此,函数的定义没有结束,编译器认为您试图在 it
bool isValidMoveBishop(int inCol, int inRow, int outCol, int outRow, char board[8][8]) {
int rowDiff = outRow - inRow;
int colDiff = outCol - inCol;
if(abs(outRow - inRow) == abs(outCol - inCol)) {
if(rowDiff < 0 && colDiff < 0) {
for(int i = 1; i > rowDiff; i--) {
if(board[inRow + rowDiff][inCol + rowDiff] != '-') {
return false;
}
}
}
} // This closing } was missing in the OP
else {
return true;
}
}
相关文章:
- std::带有自定义缓冲区的 iostream 不允许我写入
- 错误:在第 6 行'{'标记之前,此处不允许使用函数定义
- 不允许在类定义之外重写
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- HTTP POST 请求不允许我定义上下文类型
- 为什么不允许通过 decltype(lamda) 定义对象,我该如何改进它?
- 为什么不允许在非推导上下文中使用基类定义,以及如何解决这个问题
- 错误 - 此处不允许在 { 令牌之前使用函数定义
- 此处不允许在"{"标记之前进行函数定义"
- 这里不允许函数定义:void encryption(ifstream encrypt_file,ofstream key
- 为什么较新版本的C++不允许在类声明中定义纯方法?
- 错误 C2491:不允许定义 dllimport 函数
- 正在导出模板内联函数-不允许定义函数dllimport
- 不允许定义类的多个实例
- 函数内部不允许定义或重新声明
- c++:不允许定义dllimport函数,使用visual studio 2010构建
- source.cpp:LINE:COL: error:这里不允许定义函数
- 为什么标准不允许定义下面的两个函数"f"?
- 编译器不允许定义编译器生成的构造函数