Пожалуйста, подтвердите, если я прав, и скажите мне, есть ли лучшее решение:
Я понимаю, что объекты с постоянными членами, такими как int const width;
не может обрабатываться оператором синтетического присваивания, который неявно создается компилятором. Но QList (и я полагаю, что std :: list тоже) нуждается в рабочем операторе присваивания. Поэтому, когда я хочу использовать объекты с постоянными членами и QList, у меня есть три возможности:
Это верно? Есть ли другие элегантные решения?
Также мне интересно, могу ли я:
РЕДАКТИРОВАТЬ: Я никогда не назначаю объекты этого класса сам. Они создаются только конструктором копирования или перегруженным конструктором. Таким образом, оператор присваивания требуется только контейнеру, а не мне.
EDIT2: Это оператор присваивания, который я создал. Я не уверен, что это правильно. Ячейка имеет конструктор с двумя параметрами. Эти параметры устанавливают два постоянных члена со списками инициализации. Но объект также содержит другие переменные (не const) члены.
Cell& Cell::operator=(Cell const& other)
{
if (this != &other) {
Cell* newCell = new Cell(other.column(), other.row());
return *newCell;
}
return *this;
}
EDIT3: Я нашел этот поток почти с тем же вопросом: C ++: Проблемы STL с членами класса const Все ответы, объединенные вместе, дали ответы на мои вопросы.