2017-10-12 17 views
2

私は、クラスを持っていると私は表示するように.hファイルの無効な変換

抜粋をコンパイルするの.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++コンテナを使用することをお勧めします。

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

Matrix board; 

それとも、さらに一歩それを取るしたい場合はxy座標を取って、あなた自身のgetset機能を実装することができますので、あなたは、マトリックスクラスにすることができます。

関連する問題