For loop - "错误:预期声明"

时间:2015-05-22 10:37:27

标签: c++ for-loop multidimensional-array visual-studio-2013 console

作为基于文本的Battle Ship游戏的一部分,我试图在控制台中显示一个简单的网格/电路板。不幸的是,我在制作电网时遇到了错误。网格由2D数组表示,-I' m使用for循环初始设置网格的每个元素为" EMPTY"。 然而,当我试图让代码运行时,我收到错误说"预期声明"和"语法错误:')' &#34 ;.我做错了什么?以下是有问题的代码部分:

enum GridContent {SHIP, HIT, MISS, EMPTY};

const int GRID_SIZE = 10;

GridContent board[GRID_SIZE][GRID_SIZE];

// Intellisense error on "for": "Expected a declaration."
for (int y = 0; y < GRID_SIZE; y++)
/* Errors for above line: "Missing ';' before '++', '<', '{', and ')'",
"Syntax error: ')'", "Syntax error: 'for'", "'int y' : redefinition"" */
{ // "Missing ';' before '{'"
    for (int x = 0; x < GRID_SIZE; x++)
        board[y][x] = EMPTY;
}

3 个答案:

答案 0 :(得分:2)

我认为你的意思是

for (int x = 0; x < GRID_SIZE; x++)
    board[y][x] = EMPTY;

而不是

for (int x = 0; x < GRID_SIZE; x++)
    grid[GRID_SIZE][GRID_SIZE] = EMPTY;

在您的代码段中,grid是未声明的标识符,并且使用值GRID_SIZE作为索引是错误的,因为相应的元素将超出数组。

同样从你的代码片段中不清楚是否必须像

那样定义数组
Grid board[GRID_SIZE][GRID_SIZE];

或喜欢

GridContent board[GRID_SIZE][GRID_SIZE];

答案 1 :(得分:2)

你必须用GridContent替换Grid        网格板[GRID_SIZE] [GRID_SIZE];

答案 2 :(得分:0)

数组名称是board,Grid是某种类型。 所以我站在循环中你应该用板而不是网格。 2.您的数组是GRID_SIZE,当您访问时,您使用了该变量,这意味着arrayIndexOutOfBound