Discussion Board

Results 1 to 5 of 5
  1. #1
    Registered User SAA_'s Avatar
    Join Date
    Feb 2009
    Posts
    8
    Этот метод перекрыт в наследнике. Объявлен он с "const". (Статический?)
    void Draw(const TRect& aRect) const;
    Но мне нужно в нем изменять свойство класса (счетчик показанных страниц TInt).
    Получаю ошибку: "Illegal assignment to constant"
    Я так понимаю, если я создам не статический метод, для изменения счетчика, то все-равно не смогу его вызвать из статического.
    Как такое обходить ?
    Спасибо.

  2. #2
    Nokia Developer Champion Den123's Avatar
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536
    const - это не статический, нет
    Делайте присвоение в собственном методе void MyDraw(const TRect& aRect) и в нем же вызывайте обычный Draw

  3. #3
    Super Contributor ivey's Avatar
    Join Date
    Jun 2006
    Location
    Moscow, Russia
    Posts
    803
    const означает константный. В константном методе нельзя изменять члены класса, за исключением членов с ключевым словом mutable. Так что Вы можете просто сделать Ваш счётчик mutable.

    Code:
    mutable TInt iCounter;
    Regards,
    ivey

  4. #4
    Registered User JasFas0la's Avatar
    Join Date
    Nov 2007
    Posts
    84
    В целом очень не рекомендуется изменять переменные объекта из константных методов. Особенно из 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 SAA_'s Avatar
    Join Date
    Feb 2009
    Posts
    8
    Спасибо! Вроде разобрался.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved