如何从指针C ++返回一个对象

时间:2017-03-28 15:14:34

标签: c++ pointers

我目前不熟悉使用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 ++和使用指针非常陌生。

非常感谢任何建议/解决方案!

0 个答案:

没有答案