1
所以这里是我的代码和我的错误是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(O,P,假);'创建*内存泄漏*,则分配内存并取消引用返回的指针,然后丢弃指针。相反,例如'_grid [i] [j] =单元格(...);'。 –
另外,在发布有关构建错误的问题时,请在问题中包含完整和未编辑的构建日志,并在代码中标出错误的位置。请修改您的问题以包含该信息。 –
但是,考虑一下'std :: array'非常像普通数组,因此数组中的对象将在创建数组时创建,因此您需要一个* default *构造函数。如果你不做任何特殊的阵列构造。 –