【问题标题】:invalid conversion from ‘const char*’ to ‘char’ Class Error从‘const char*’到‘char’类错误的无效转换
【发布时间】:2018-03-24 01:09:58
【问题描述】:

我有一个类,我不知道如何解决.cc文件中的错误进行编译

.h 文件的摘录以在 .h 文件中显示板

    class sudokuboard {

 private:

  /*** Member data ***/

  char board[9][9];

.cc 文件部分给我带来了麻烦

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]’

我不知道该改变什么了。我尝试了很多不同的方法。

【问题讨论】:

  • 数组中没有方法get,所以board.get可能只是sudokuboardget方法。 "_" 是字符串字面量,应该是'_'

标签: c++ arrays char


【解决方案1】:

问题在于 C 风格的数组没有 get 方法。 最简单的解决方案应该是使用board[r][c] 访问变量。 但我建议使用 c++ 容器。

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

Matrix board;

或者,如果您想更进一步,可以将 Matrix 设为一个类,这样您就可以实现自己的 getset 函数,采用 xy 坐标。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    相关资源
    最近更新 更多