Это функция приемника для параметра value
, из-за этого:
grid[index] = value;
Так что в этом случае вы должны передать неконстантное значение и переместить его в grid
:
Cell& Grid::set(const int x, const int y, Cell value)
{
grid[get_index(x, y)] = std::move(value);
return grid[index];
}
Вы должны убедиться, что Cell
является подвижным типом, потому что, если это не так, это будет стоить вам дополнительную копию.
Это общий шаблон, который используется, когда дело доходит до функций приемника. (Имеющиеся в виду функции, которые хранят аргументы где-то, что переживает сам вызов функции.)
Также взгляните на другой соответствующий ответ на другой вопрос о том, когда полезно передавать по ссылке.