循环中的多维数组分配声明:表达式必须是可修改的左值
Multidimensional array assigning in loop stating: expression must be a modifiable lvalue
所以在 class 中,我有一个这样的数组:
public:
int playGrid[10][10];//size of the grid, 10x10 or 100 squares
当我这样做时:
for (int i = iX1; i < iX2; i++)
{
if (i == iX1)
{
playGrid[i][iY1] = 4;
}
}
这个:
playGrid[i][iY1] = 4;
给我:
expression must be a modifiable lvalue
我不确定我做错了什么。此代码位于 class 的方法之一内,因此它可以访问它。我找遍了所有地方,但我无法找到他们使用具有简单整数赋值的二维数组的示例。
感谢您的帮助!
编辑:请求了更多代码,所以我们开始:
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2) const
{
if (iX1 != iX2)
{
if (iX1 < iX2)
{
for (int i = iX1; i < iX2; i++)
{
if (i == iX1)
{
playGrid[i][iY1] = 4;
}
}
}
else
{
}
}
else if (iY1 != iY2)
{
}
}
这是网格 class:
class Grid
{
public:
int playGrid[10][10];//size of the grid, 10x10 or 100 squares
void drawGrid() const;
void placeBoat(int, int, int, int) const;
Grid();
~Grid();
};
问题是您试图在 const 方法中修改对象。删除 const
class Grid
{
...
void placeBoat(int, int, int, int);
...
};
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2)
{
...
}
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2) const
看到定义末尾的const
了吗?这意味着您可以在实例 (Grid
) 为常量时调用此方法。
由于您允许该调用,因此编译整个函数体时假定 this
的类型为 const Grid *
。
然后您试图更改数组,它是 (const) Grid 的成员,因此出现编译器错误。
所以在 class 中,我有一个这样的数组:
public:
int playGrid[10][10];//size of the grid, 10x10 or 100 squares
当我这样做时:
for (int i = iX1; i < iX2; i++)
{
if (i == iX1)
{
playGrid[i][iY1] = 4;
}
}
这个:
playGrid[i][iY1] = 4;
给我:
expression must be a modifiable lvalue
我不确定我做错了什么。此代码位于 class 的方法之一内,因此它可以访问它。我找遍了所有地方,但我无法找到他们使用具有简单整数赋值的二维数组的示例。
感谢您的帮助!
编辑:请求了更多代码,所以我们开始:
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2) const
{
if (iX1 != iX2)
{
if (iX1 < iX2)
{
for (int i = iX1; i < iX2; i++)
{
if (i == iX1)
{
playGrid[i][iY1] = 4;
}
}
}
else
{
}
}
else if (iY1 != iY2)
{
}
}
这是网格 class:
class Grid
{
public:
int playGrid[10][10];//size of the grid, 10x10 or 100 squares
void drawGrid() const;
void placeBoat(int, int, int, int) const;
Grid();
~Grid();
};
问题是您试图在 const 方法中修改对象。删除 const
class Grid
{
...
void placeBoat(int, int, int, int);
...
};
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2)
{
...
}
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2) const
看到定义末尾的const
了吗?这意味着您可以在实例 (Grid
) 为常量时调用此方法。
由于您允许该调用,因此编译整个函数体时假定 this
的类型为 const Grid *
。
然后您试图更改数组,它是 (const) Grid 的成员,因此出现编译器错误。