2013-03-29 3 views
-1

"=="및 "! ="을 사용하여 문자열 배열 및 char과 비교하려고 할 때이 오류가 발생합니다. 이것은 연산자 오버로딩을해야한다는 것을 의미합니까? 만약 그렇다면, 나는 연산자 오버로딩에 너무 익숙하지 않기 때문에 누구나 (또는 ​​다른 방법으로) 그것을 수행하는 방법에 대한 올바른 방향으로 나를 가리킬 수 있습니까?"연산자 =="2 차원 배열로 작업 중 오류 일치 얻기

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; 
    } 
} 
+0

'string'을'char'와 비교하려고 할 수 있습니다. – jonhopkins

+0

문자열은 문자 배열 일 뿐이지 만 아니요? 따라서 주어진 시간에 list [x] [y]는 char와 같습니다. 아니면 틀린가? – DiamonW

+0

문자열은 문자 배열과는 다른 문자 배열입니다. 당신은 당신의 가정에 가깝지만 실제로 그것은 'list [x] [y] [z]'입니다. 따라서 두 가지 방법으로 코드를 변경할 수 있습니다. 작은 따옴표를 큰 따옴표로 바꾸거나'list [row_start] [column_start] [0] == 'S'&& list [row_end] [column_end] [0]! = ''' – jonhopkins

답변

0

당신은 ''를 사용하여 std::stringchar A와 비교된다. 당신이 std::string를 사용하는 경우 대신

if(list[row_start][column_start] == "S" && list[row_end][column_end] != " "){ } 

을 시도, 그 표준 타입이고, 당신은 operator== 오버로드 할 수 없습니다. std::string에 대한 참조는 here을 참조하십시오.

+0

Oh 와우 ... 할당 연산자를 사용하여 문자열을 문자열로 설정할 수는 있지만 비교 연산자를 사용하여 char을 확인할 수는 없습니까? – DiamonW

+0

예를 들면? –

+0

예를 들어 다른 함수에서 배열의 특정 부분을 공백으로 설정해야하므로 이렇게했습니다 : list [0] [0] = ''; list [0] [1] = ''; – DiamonW