我目前不熟悉使用C ++进行编码,而且我遇到了指针问题。我正在制作一个suduko解算器,它有一个单元类和一个单元组类。单元类具有设置单元格值的方法,无论是原始值还是给定数字,以及考虑候选列表的多个方法(值可能是可能的数字列表)。已创建CellGroup
类,因此我可以使用CellGroup
的9来检查行,列和3x3块。
我目前设法从文件中读取suduko,并相应地填充单元格组。以下是单元格和组的设置方式:
细胞:
Cell::Cell(int value, bool given)
{
if (given == true)
{
m_given = true;
}
else {
m_given = false;
for (int i = 1; i < 10; i++) { //1 to 9
if (i != value) { //if i does not equal the value
m_candidateList.push_back(i); //populate the candidate list
}
}
}
}
在单元格组中:
void CellGroup::setCell(int index, Cell *cell)
{
m_cells[index] = cell;
}
在初始化网格和添加单元格时,这似乎工作正常。
我目前的问题是我现在正在尝试检索这些细胞,因此我可以获得价值并最终尝试获得解决方案。
我在CellGroup
类中有一个方法来检索单元格:
Cell* CellGroup::returnCell(int index)
{
Cell *cell = m_cells[index];
return cell;
}
单元类中的方法可以获取单元格中的值以及是否已给出数字:
int Cell::getValue(void) const
{
return m_value;
}
bool Cell::getIsGiven(void) const
{
if (m_given == true) {
return true;
}
else {
return false;
}
}
然而在拼图类中,当我尝试检索单元格值或者是否已经给出它时,它返回的是模糊值。我认为指针返回一个地址,我不确定如何获取实际对象。以下是我目前的尝试:
void SudokuPuzzle::TryToSolve()
{
Cell* cell = m_gridRows[1].returnCell(1);
Cell newCell = *cell;
int val = newCell.getValue;
cout << val << endl;
bool given = newCell.getIsGiven;
cout << given << endl;
}
道歉,如果答案非常明显,我对C ++和使用指针非常陌生。
非常感谢任何建议/解决方案!