2017-04-03 1 views
0

저는 C++을 처음 접했고 약간의 지침이 필요합니다. 현재 셀 값, 위치 요법 등을 저장하는 "셀"개체로 구성된 9x9 2 차원 배열이 있습니다. A를 각 셀의 값을 스트리밍 할 때개체의 값을 텍스트 파일에 쓸 수 없습니다. C++

내가 int getValue();

int cell::getValue() 
{ 
    return value; 
} 

내가 내 프로그램을 통해 아무 문제없이이 방법을 사용했던 방법을 사용하여 셀 값에 액세스 할 수 있습니다, 그러나, 내 문제가 발생합니다 텍스트 파일.

이 오류가 라인에 발생
void SudokuPuzzle::Output() const 
{ 
ofstream fout("sudoku_solution.txt"); // DO NOT CHANGE THE NAME OF THIS FILE 
if(fout.is_open()) 
{ 
    for(int y = 0; y < 9; ++y) 
    { 
     for(int x = 0; x < 9; ++x) 
     { 
      // output each grid value followed by " " 
      fout << grid[y][x].getValue() << " "; 

     } 

     fout << endl; 
    } 
    fout.close(); 
} 
} 

:

fout << grid[y][x].getValue() << " "; 

'내부 세포 :: getValue (무효)': 변환 할 수 없습니다 여기

텍스트 파일에 값을 스트리밍하는 방법이다 'const cell'에서 'cell'로의 포인터 '&'

편집 : 격자는 다음과 같이 정의됩니다 :

cell grid[9][9]; 

추가 정보가 필요한지 물어보십시오. 도움이 될 것입니다.

+1

''SudokuPuzzle :: Output()'이'const'이기 때문에'grid'는 const입니다. const 객체에 대해서만'const' 메소드를 호출 할 수 있습니다. 'getValue'의 선언을'int cell :: getValue() const'로 변경하십시오. –

+0

@RichardCritten 고맙습니다. 완벽하게 작동합니다. 얼마나 오래이 일을하려고 노력했는지 믿을 수 없습니다! –

답변

0

제공된 코드에서 그리 명확하지는 않지만 grid가 SodukuPuzzle의 멤버 인 경우 Output 메서드가 const이므로 그리드가 grid[y][x] 인 메서드 내에 있습니다. cell::getValue은 const가 아니므로 const 객체에서 호출 할 수 없습니다. 아마도 cell::getValue const로 수정하면됩니다.

+0

브릴리언트, 정확히 내가 필요한 것, 대단히 감사합니다! –