C++ 在循环语句中分配多维数组:表达式必须是可修改的左值
在一个类中,我有这样一个数组:C++ 在循环语句中分配多维数组:表达式必须是可修改的左值,c++,arrays,multidimensional-array,2d,lvalue,C++,Arrays,Multidimensional Array,2d,Lvalue,在一个类中,我有这样一个数组: 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; }
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;
}
}
给我:
expression must be a modifiable lvalue
我不确定我做错了什么。此代码位于类的一个方法中,因此它可以访问它。我已经找遍了所有地方,但是我找不到一个例子,他们使用带有简单整数赋值的2D数组
谢谢你的帮助
编辑:请求了更多代码,因此我们开始:
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 Grid
{
...
void placeBoat(int, int, int, int);
...
};
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2)
{
...
}
问题在于,在常量方法中,您试图修改对象。移除常数
class Grid
{
...
void placeBoat(int, int, int, int);
...
};
void Grid::placeBoat(int iX1, int iY1, int iX2, int iY2)
{
...
}
请参见定义末尾的const
?这意味着您允许在实例(Grid
)为常量时调用此方法
由于您允许该调用,因此整个函数体将在编译时假定this
的类型为const Grid*
然后,您试图更改数组(它是(const)网格的一个成员),从而更改编译器错误
请参见定义末尾的const
?这意味着您允许在实例(Grid
)为常量时调用此方法
由于您允许该调用,因此整个函数体将在编译时假定this
的类型为const Grid*
然后,您试图更改数组,它是(const)网格的一个成员,因此出现了编译器错误。不是错误的确切原因,但我认为您的意思是
if(I==iX1)
而不是if(I=iX1)
需要查看更多代码。错误不在您发布的代码行中(即使错误消息是)。@john我已按要求添加了更多代码。@lilisten-Oh。是的。就这样。。。。我现在觉得自己很愚蠢。这不是你的错误的确切原因,但我认为你的意思是if(I==iX1)
而不是if(I=iX1)
需要查看更多代码。错误不在您发布的代码行中(即使错误消息是)。@john我已按要求添加了更多代码。@lilisten-Oh。是的。就这样。。。。我现在觉得自己很愚蠢。
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