Russian Qt Forum
Ноябрь 23, 2024, 15:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как позвать из const методa non-const?  (Прочитано 4506 раз)
ildar
Гость
« : Сентябрь 18, 2009, 15:52 »

Код:
class A {
    void x() {
        ...
    }

    void y() const {
        x(); // <- хочется сделать такой вызов
    }
};

пытался нагуглить пример, но что то не нашлось Грустный

так вообще можно сделать? если да - как?
Записан
Winstrol
Гость
« Ответ #1 : Сентябрь 18, 2009, 15:53 »

Код:
class A {
    void x() {
        ...
    }

    void y() const {
        x(); // <- хочется сделать такой вызов
    }
};

пытался нагуглить пример, но что то не нашлось Грустный

так вообще можно сделать? если да - как?
нет.
Записан
Rcus
Гость
« Ответ #2 : Сентябрь 18, 2009, 15:56 »

только хак в виде const cast'а. А вообще это обычно нарушение контракта предоставляемого модификатором const. Если нужно модифицировать внутреннее состояние объекта не меняя внешнее, то в этом случае больше подойдут mutable члены.
Записан
ildar
Гость
« Ответ #3 : Сентябрь 18, 2009, 16:09 »

const_cast вроде бы позволяет работать только с переменными, но не с функциями  Непонимающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Сентябрь 18, 2009, 17:46 »

Код:
class A {
    void x() {
        ...
    }

    void y() const {
        x(); // <- хочется сделать такой вызов
    }
};
пытался нагуглить пример, но что то не нашлось Грустный

так вообще можно сделать? если да - как?
1) самое лучшее если "перехочется"  Улыбающийся
2) определить еще один void x() const;
3) ну если уж "надо"
Код:
 void A::y() const {
        A * bad = (A *) this;
        bad->x();
 }
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Сентябрь 18, 2009, 22:18 »

const_cast вроде бы позволяет работать только с переменными, но не с функциями  Непонимающий


Код
C++ (Qt)
void A::y() const
{
       A *non_const_this= const_cast<A *>(this);
       non_const_this->x();
}
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 23.