Arrays 获取错误“;运算符==”不匹配;使用二维阵列
我在尝试使用“==”和“!=”与字符串数组和字符进行比较时遇到此错误。这是否意味着我需要执行一些运算符重载?如果是这样的话,有谁能给我指出正确的方向,告诉我怎么做(或者其他方法),因为我还不太熟悉操作符重载Arrays 获取错误“;运算符==”不匹配;使用二维阵列,arrays,overloading,operator-keyword,Arrays,Overloading,Operator Keyword,我在尝试使用“==”和“!=”与字符串数组和字符进行比较时遇到此错误。这是否意味着我需要执行一些运算符重载?如果是这样的话,有谁能给我指出正确的方向,告诉我怎么做(或者其他方法),因为我还不太熟悉操作符重载 bool legalMove(string list[][7], int row_start, int column_start, int row_end,int column_end) { if(list[row_start][column_start] == 'S' &
bool legalMove(string list[][7], int row_start,
int column_start, int row_end,int column_end)
{
if(list[row_start][column_start] == 'S' && list[row_end][column_end] != ' ')
{
if((row_end == row_start + 1 && column_start == column_end) ||
(row_start == row_end && (column_end == column_start + 1
|| column_end == column_start - 1)))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
您正在使用
'
将std::string
与char
进行比较。试试看
if(list[row_start][column_start] == "S" && list[row_end][column_end] != " "){ }
如果您使用的是
std::string
,这是一种标准类型,您将无法重载运算符==
。有关std::string
的参考信息,请参阅,这可能是因为您试图将字符串
与字符
进行比较。字符串只是一个字符数组,但不是?因此,列表[x][y]在任何给定时间都等于一个字符。或者这是不正确的?字符串是一个字符数组,它不同于一个字符。你的假设很接近,但实际上是list[x][y][z]
这是一个字符。因此,您可以通过两种方式更改代码。将单引号更改为双引号,或者检查list[row\u start][column\u start][0]='S'&list[row\u end][column\u end][0]!='代码>好的,我明白了。现在回想起来,这是个愚蠢的问题。哈哈。我感谢你的帮助。没问题。重要的是你学到了一些有用的东西。。。因此,您可以使用赋值运算符将字符设置到字符串中,但不能使用比较运算符检查字符?例如,在另一个函数中,我需要将数组的某些部分设置为空格,所以我这样做了:list[0][0]='';列表[0][1]='';