2017-04-03 98 views
0

我对C++相当陌生,需要一些指导。 我目前有一个9x9二维数组,由“单元”对象组成,存储诸如单元格值,位置等信息。无法将对象的值写入文本文件C++

我可以用int getValue();

我用我的整个程序这种方法没有任何问题的方法访问单元格的值,但是,试图每个单元格的值流到发生时,我的问题文本文件。

下面是流值到一个文本文件的方法:

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(无效)':不能转换'this'从'常量单元格'指向'单元格&'

编辑:网格定义如下:

cell grid[9][9]; 

请不要犹豫,询问是否需要更多信息。 任何帮助,将不胜感激!

+1

由于'SudokuPuzzle :: Output()'是'const','grid'是const。你只能在const对象上调用const方法。将'getValue'的声明更改为'int cell :: getValue()const' –

+0

@RichardCritten谢谢你,完美地工作,不能相信我花了多少时间尝试解决这个问题! –

回答

0

从提供的代码中不完全清楚,但是如果网格是SodukuPuzzle的成员,那么由于Output方法是const,因此网格在方法内,这意味着grid[y][x]是常量。 cell::getValue是非常量,因此不能在常量对象上调用。你可以通过设置cell::getValue const来解决这个问题。

+0

辉煌,正是我所需要的,非常感谢! –