У меня есть набор stl с объектами класса Cell
class Cell
{
public:
//Ctor/Dtor
Cell(size_t cellId=0,int x =0,int y = 0,size_t t = 0):m_cellId(cellId),m_x(x),m_y(y),m_t(t),m_color(WHITE),m_pCellId(0),m_regNum(0){}
////////////////////
// Mutators //
////////////////////
void schedNode(size_t t,int nodeId){m_sched[t] = nodeId;}
void setColor(color c){m_color = c;}
void setParentId(size_t pId){m_pCellId = pId;}
//.....
}
Каждый Cell
имеет m_x
и m_y
(член) координаты + дополнительные элементы данных (m_t,m_color,m_pCellId,m_regNum
)
Класс comapareCells используется для поиска ячейки только на основе ее фактических координат m_x и m_y:
class comapareCells
{
public:
bool operator()(const Cell& lCell,const Cell& rCell)
{
if(lCell.getX() < rCell.getX())
return true;
else if(lCell.getX() == rCell.getX())
return (lCell.getY() < rCell.getY());
else
return false;
}
};
Я запускаю следующее, чтобы найти «фактическую ячейку»: c
- это ячейка, котораянужны только координаты ячейки.Он используется, чтобы найти фактическую ячейку, содержащуюся в cet, с заданными координатами и попытаться выполнить некоторые операции с фактической ячейкой:
set<Cell,comapareCells>::iterator itCell;
if((itCell = m_cells.find(c)) == m_cells.end())
return;
if(itCell->getColor() != WHITE)
return;
itCell->setColor(GRAY);
itCell->setParentId(cIdFrom);
Я получаю ошибку компиляции / с для itCell->setColor(GRAY); itCell->setParentId(cIdFrom);
:
не может преобразовать указатель 'this' из 'const Cell' в 'Cell &'
Как это можно решить?