Как использовать инициализаторы () для вектора в классе? - PullRequest
0 голосов
/ 21 февраля 2020

Этот код выдает ошибку

class Board {
  vector<vector<int>> sudoku(9, vector<int>(9));
// Error; Expected a parameter declarator
};

Как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 21 февраля 2020

Вы не можете использовать скобки для непосредственной инициализации члена, когда вы делаете в инициализации класса. Вы должны либо инициализировать член скобкой ({}), либо равной ей (= ...;). Это означает, что вам необходимо провести рефакторинг, чтобы он имел форму

vector<vector<int>> sudoku = vector<vector<int>>(9, vector<int>(9));
// or
vector<vector<int>> sudoku{9, vector<int>(9)};
3 голосов
/ 21 февраля 2020

В одну сторону:

class Board {
  vector<vector<int>> sudoku = vector<vector<int>>(9, vector<int>(9));
};

Второй путь:

class Board {
public:
    Board() : sudoku(9, vector<int>(9)) {}
private:
    vector<vector<int>> sudoku;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...