Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

Как из константной функции вызвать неконстантную? - C++

28.01.2014, 22:38. Просмотров 346. Ответов 2
Метки нет (Все метки)

Здравствуйте. Появилась необходимость сделать такой вот трюк. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class B
{
    public:
        void f();
};
 
class A
{
    B b;
    
    public:
        void foo() const
        {
            b.f();
        }
};
Добавлено через 19 минут
up...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 22:38     Как из константной функции вызвать неконстантную?
Посмотрите здесь:

Возврат константной ссылки из функции - C++
Можно ли из функции возвращать константную ссылку? Есть след. классы: class A { /*чтото тяжёлое, сотни байт, например массив, или...

Вызов не константной функции, изменяющей свойства класса, из константой . Возможно? - C++
Сразу к делу: #include <QCoreApplication> class Base { public: Base(); virtual int DoSomething(const int& var)...

Как из обыной функции вызвать функции член класса? - C++
Требуется установить таймер. При компиляции выдаётся ошибка. Как ее решить? void handlук(int signo) { cTimer.run; } ...

Как вызвать массив из функции? с++ - C++
Есть код, нормально работающий: #include <iostream> using namespace std; int main() { cout << "Input number: "; ...

Как вызвать 3 данные функции? - C++
#include "stdafx.h" #include <conio.h> #include <string> #include <iostream> using namespace std; class Result{ double x, y,...

Как вызвать функцию чужого приложения, как подменить значения аргументов функции? - C++
собственно вопрос первый: мне нужно каким то образом из своей программы/библиотеки вызвать функцию чужого приложения, естессно...

Как вызвать в main данные функции? - C++
Вот весь код,приму любые замечания,так как я еще учусь) Ткните меня в мои же ошибки) using namespace std; template <class...

Как вызвать функцию из функции main? - C++
работаю в деве. предположим я создал проект, изначально в нем находится файл main.cpp. предположим я создал в нем еще один файл с именем...

Как вызвать Main из другой функции? - C++
собственно в этом то и вся проблема(( Не знаю как вызвать Main из другой функции.... Может кто помочь??

Как вызвать из 1 функции параметры другой? - C++
Всем привет! Собственно, вопрос в названии. Хочу написать 2 функции: первая отводит память под массив, а вторая этот массив...

Беру и спокойно вызываю неконстантную функцию для константного объекта - C++
Это как ? Везде пишут, что сие невозможно в принципе. Или есть исключение для конструктора ? #include <iostream> using namespace...

Как сделать доступным обращение к методу параметра, объявленного константной ссылкой? - C++
Ругается на строку, содержащую присваивание локальной переменной значения метода параметра, объявленного константной ссылкой. Метод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.01.2014, 22:59     Как из константной функции вызвать неконстантную? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1.
C++
1
2
3
4
5
6
7
8
9
10
class A
{
    mutable B b;
    
    public:
        void foo() const
        {
            b.f();
        }
};
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
    B b;
    B& ref;
    
    public:
        A() : ref(b) {}
        void foo() const
        {
            ref.f();
        }
};
3. п.2 только через указатель
4. const_cast
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
28.01.2014, 23:17  [ТС]     Как из константной функции вызвать неконстантную? #3
Jupiter, спасибо, про mutable совсем забыл а второй способ первый раз вижу.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru