Название: как добавить в список класс с константными полями Отправлено: deMax от Декабрь 07, 2015, 09:24 Код: class A { p.s. можно конечно проигнорить const добавив функцию, но как то все это некрасиво - ради const еще оператор копирования городить. A& operator=(const A& other) {*(uint*)&b = other.b; return *this;} Название: Re: как добавить в список класс с константными полями Отправлено: Igors от Декабрь 07, 2015, 10:37 На все вопросы с константностью ответ всегда один, типа "а вы ее уберите" :)
По смыслу какого-то легального способа быть не должно. Объявили "const" - получите проблемы с копированием, это нормально. Поэтому вместо такого (понтового) объявления лучше разрисовать геттеры/сеттеры (здесь это к месту) Название: Re: как добавить в список класс с константными полями Отправлено: Racheengel от Декабрь 07, 2015, 14:52 Сделайте b приватным мембером (я не люблю приваты, но это, наверное, как раз тот случай).
И проследите, чтобы никакие методы вашего класса его не меняли. Название: Re: как добавить в список класс с константными полями Отправлено: deMax от Декабрь 07, 2015, 16:20 Так у меня const для приватных членов класса, например size для кольцевого буфера.
p.s. для пустого оператора присваивания значение b копируется, по крайней мере оно правильное. т.е. *(uint)&b =other.b; необязательно что ли? A &operator=(const &A other) {return *this;} Название: Re: как добавить в список класс с константными полями Отправлено: Igors от Декабрь 08, 2015, 05:10 Так у меня const для приватных членов класса, например size для кольцевого буфера. Есть такая альтернативаКод
|