我正在尝试创建一个数独板,并有一个指针反射到它。我做了一个2D数组,它包含了板上那个区域的数字,以及一个布尔值,它是由程序还是玩家放在那里的,这样以后如果他们放错了数字,就可以删除它。
当网格中填充0时,不会发生错误,但一旦添加了一个数字,就会标记错误C2397。
我现在的代码是:
struct sudokuNumbers {
int number;
bool solid = true;
};
class SudokuBoard {
private:
sudokuNumbers sudokuBoard1[9][9]
{
5, 3, 4, 6, 7, 8, 9, 1, 2,
6, 7, 2, 1, 9, 5, 3, 4, 8,
1, 9, 8, 3, 4, 2, 5, 6, 7,
8, 5, 9, 7, 6, 1, 4, 2, 3,
4, 2, 6, 8, 5, 3, 7, 9, 1,
7, 1, 3, 9, 2, 4, 8, 5, 6,
9, 6, 1, 5, 3, 7, 2, 8, 4,
2, 8, 7, 4, 1, 9, 6, 3, 5,
3, 4, 5, 2, 8, 6, 1, 7, 9,
};
};
我只是不明白程序要转换什么,因为如果我将光标悬停在数组上,它会显示板中的每个值都分配了int
值,并且bool
值为true。
2条答案
按热度按时间s8vozzvw1#
Aggregate Initialization太简单了,无法完成你需要做的事情。它想初始化所有的东西,包括使用默认初始化器的
bool
成员。当编译器看到bool
被初始化为3时,它会很不安。它会高兴地接受0(false
)和1(true
),这解释了为什么你的初始化器的全零版本被接受。简单的修复方法是向
sudokuNumbers
添加一个只接受数字的构造函数。pftdvrlh2#
你的结构体是一个int,后面跟着一个bool,所以当你初始化数组时,它应该看起来像这样: