Этот метод перекрыт в наследнике. Объявлен он с "const". (Статический?)
void Draw(const TRect& aRect) const;
Но мне нужно в нем изменять свойство класса (счетчик показанных страниц TInt).
Получаю ошибку: "Illegal assignment to constant"
Я так понимаю, если я создам не статический метод, для изменения счетчика, то все-равно не смогу его вызвать из статического.
Как такое обходить ?
Спасибо.
const означает константный. В константном методе нельзя изменять члены класса, за исключением членов с ключевым словом mutable. Так что Вы можете просто сделать Ваш счётчик mutable.
В целом очень не рекомендуется изменять переменные объекта из константных методов. Особенно из Draw(), т.к. он служит для отрисовки, а не прощёта
но если очень хочется, можно сделать ещё вот так.
если мы имеем, например:
class CMyClass : public CCoeControl
{
...
virtual void Draw(const TRect& aRect) const;
public:
TInt somaValue_;
};