Итак, вот мой код, и моя ошибка error C2512: 'std::array<std::array<SudokuGrid::Cell,9>,9>' : no appropriate default constructor
Я думал, что предоставляю это своим публичным определением, но мне что-то не хватает. Я пытался интегрировать ответ от this вопроса, но я не могу получить правильный методКонструктор для массива ячеек 2d структур
class SudokuGrid
{
private:
struct Cell{
int value;
bitset<9> pencils;
bool isSolved;
Cell(int i, bitset<9> p, bool s):
value{ i = 0 },
pencils{ p.reset() },
isSolved{ s = false }{}
};
array < array < Cell, 9>, 9 > _grid;
public:
SudokuGrid(string s) :_grid{}
{
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
bitset<9> p;
p.reset();
_grid[i][j] = Cell(0, p, false);
}
}
};
выражение '* новый Cell (0, р, ложно),' создает утечку * памяти * выделить память и разыменовать возвращенный указатель, а затем просто выбросить указатель. Вместо этого, например, '_grid [i] [j] = Cell (...);'. –
Кроме того, при размещении вопроса о ошибках сборки укажите полный и неотредактированный журнал сборки в вопросе и отметьте, где ошибка в показанном коде. Измените свой вопрос, чтобы включить эту информацию. –
Однако подумайте, что 'std :: array' очень похож на обычный массив, поэтому объекты в массиве будут созданы при создании массива, поэтому вам нужен конструктор * default *. если вы не делаете специальной конструкции массива. –