2017-10-12 7 views
2

나는 수업을하고 난 보여 .H 파일의무효 변환

exerpt를 컴파일 .CC 파일에 오류를 해결하는 방법을 모른다 .H 파일에서 보드 나에게 문제가

sudokuboard::sudokuboard() 
{ 
    for (size_t r = 0; r < 9; r++){ 
    for (size_t c = 0; c < 9; c++) 
     board[r][c] = '_'; 
    } 
} 

void sudokuboard::print() const 
// write the board to cout 
{ 
    for (size_t r = 0; r < 9; r++){ 
     string colStr = ""; 
     for (size_t c = 0; c < 9; c++){ 
      colStr += board.get(r, c); 
     } 
     cout << colStr << endl; 
    } 

void sudokuboard::remove(size_t r, size_t c) 
// remove the numeral at position (r,c) 
{ 
    board[r][c] = "_"; 
} 

ERRORS: 
sudokuboard.cc: In member function ‘void sudokuboard::print() const’:  
sudokuboard.cc:26: error: request for member ‘get’ in ‘((const 
sudokuboard*)this)->sudokuboard::board’, which is of non-class type 
‘const char [9][9]’ 
sudokuboard.cc: In member function ‘void sudokuboard::remove(size_t, 
size_t)’: 
sudokuboard.cc:42: error: invalid conversion from ‘const char*’ to ‘char’ 
sudokuboard.cc:59: error: request for member ‘get’ in ‘((const 
sudokuboard*)this)->sudokuboard::board’, which is of non-class type ‘const 
char [9][9]’ 

을 제공

class sudokuboard { 

private: 

    /*** Member data ***/ 

    char board[9][9]; 

.CC 파일 부분은 더 이상 변경 해야할지 모르겠어. 나는 많은 다른 접근법을 시도했다.

+0

어레이에'get' 메소드가 없으므로'board.get'는 아마도'sudokuboard'의'get' 메소드 일 것입니다. ''_ ''은 문자열 리터럴이고''_' '이어야합니다. – VTT

답변

0

C 스타일 배열에는 get 메서드가 없습니다. 가장 쉬운 해결책은 board[r][c]으로 변수에 액세스하는 것입니다. 하지만 C++ 컨테이너를 사용하는 것이 좋습니다. 당신이 한 단계 더 걸릴하려는 경우가 xy 좌표를 복용 자신의 getset 기능을 구현할 수 있도록

using Row = std::vector<char>; 
using Matrix = std::vector<Row>; 

Matrix board; 

, 당신은 클래스 매트릭스를 만들 수 있습니다 또는.