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]='';