×

Discussion Board

Results 1 to 5 of 5
  1. #1
    Registered User
    Join Date
    Feb 2009
    Posts
    8

    Question CCoeControl.Draw

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

  2. #2
    Super Contributor
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536

    Re: CCoeControl.Draw

    const - это не статический, нет
    Делайте присвоение в собственном методе void MyDraw(const TRect& aRect) и в нем же вызывайте обычный Draw

  3. #3
    Super Contributor
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803

    Re: CCoeControl.Draw

    const означает константный. В константном методе нельзя изменять члены класса, за исключением членов с ключевым словом mutable. Так что Вы можете просто сделать Ваш счётчик mutable.

    Code:
    mutable TInt iCounter;
    Regards,
    ivey

  4. #4
    Registered User
    Join Date
    Nov 2007
    Posts
    84

    Re: CCoeControl.Draw

    В целом очень не рекомендуется изменять переменные объекта из константных методов. Особенно из Draw(), т.к. он служит для отрисовки, а не прощёта
    но если очень хочется, можно сделать ещё вот так.
    если мы имеем, например:
    class CMyClass : public CCoeControl
    {
    ...
    virtual void Draw(const TRect& aRect) const;
    public:
    TInt somaValue_;
    };

    void CMyClass:raw(const TRect& aRect) const
    {
    CMyClass* myThis = (CMyClass*) this;
    myThis->someValue_++;

    // или
    ((CMyClass*)this)->someValue_ = 0;
    }


    Успехов!

  5. #5
    Registered User
    Join Date
    Feb 2009
    Posts
    8

    Re: CCoeControl.Draw

    Спасибо! Вроде разобрался.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×