2017-04-03 14 views
0

私はC++をかなり新しくしており、いくつかのガイダンスが必要です。 私は現在、セル値、位置などのものを格納する "セル"オブジェクトで構成された9x9 2次元配列を持っています。に、各セルの値をストリーミングしようとしたときオブジェクトの値をテキストファイルに書き込むことができません。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() << " "; 

'int型のセル::のgetValue(無効)':変換できません。 'const cell'から 'cell'へのポインタ '&'

編集:グリッドは次のように定義されます:

cell grid[9][9]; 

これ以上の情報が必要な場合はお気軽にお問い合わせください。 ご協力いただければ幸いです!

+1

'SudokuPuzzle :: Output()'が 'const'なので' grid'はconstです。 constオブジェクトに対してのみ 'const'メソッドを呼び出すことができます。 'getValue'の宣言を' int cell :: getValue()const'に変更してください –

+0

@RichardCrittenありがとう、完璧に動作します。 –

答えて

0

グリッドがSodukuPuzzleのメンバーである場合、出力メソッドがconstであるため、グリッドはメソッド内にあり、grid[y][x]はconstです。 cell::getValueはconstではないため、constオブジェクトでは呼び出すことができません。おそらくcell::getValueをconstにすることでこれを修正できます。

+0

ブリリアント、まさに私が必要としていたこと、ありがとう! –

関連する問題