1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
1

Как вызвать прегруженный const метод для статического объекта

01.11.2016, 22:17. Показов 1046. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A {
public:
    A() { cout << "A()" << endl; }
    ~A() { cout << "~A()" << endl; }
    void foo() {
        cout << "foo 1_1";
    }
    void foo(int i) {
        cout << "foo_1_2";
    }
    void foo(int i) const {
        cout << "foo_1_3";
    }
};
 
int main()
{
    A  a ;
 
    ((const A)a).foo(1) ; //вызывается 2 функция,хочу 3 
 
    return 0;
}
Как const метод не константным объектом вызвать(не через указатель)?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2016, 22:17
Ответы с готовыми решениями:

Как заставить вызвать метод класса-родителя для объекта (полиморфизм)
класс BigFloat (длинные вещественные числа с учетом знака) наследуется от BigNum (целые...

Как из дочернего объекта вызвать метод объекта родителя
Всем доброго времени суток, товарищи! Такой вопрос, как из дочернего объекта вызвать метод...

Можно ли вызвать метод одного объекта через метод другого объекта?
Мне нужно сделать так, чтобы при вызове метода OnMouseDown() Первого объекта вызывался метод...

Как вызвать метод hello внутри объекта?
&lt;script type=&quot;text/javascript&quot;&gt; const Obj = { hello: function() { console.log( 'Hello!' );...

5
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
01.11.2016, 22:29 2
Мб const_cast?
Хотя, он наоборот - снимает константность.
0
245 / 139 / 53
Регистрация: 23.11.2015
Сообщений: 394
01.11.2016, 22:32 3
первое, что пришло в голову
C++
1
2
    const A& a_ = a;
    a_.foo(1);
а вообще код из условия вызывает foo_1_3 на моих компиляторах
только показывает деструктор дважды
0
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
01.11.2016, 22:42  [ТС] 4
Babysitter, Даже через константную ссылку не могу добиться вызова 3 метода,только когда объявляю сам объект константой.
P.S. VS 2015
0
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
01.11.2016, 22:52 5
Лучший ответ Сообщение было отмечено zorro117 как решение

Решение

Цитата Сообщение от monolit Посмотреть сообщение
Хотя, он наоборот - снимает константность.
И обратно навешивает тоже, если нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A {
public:
    A() { cout << "A()" << endl; }
    ~A() { cout << "~A()" << endl; }
    void foo() {
        cout << "foo 1_1\n";
    }
    void foo(int i) {
        cout << "foo_1_2\n";
    }
    void foo(int i) const {
        cout << "foo_1_3\n";
    }
};
 
int main()
{
    A  a ;
    const_cast<A const &>(a).foo(1) ; 
}
zorro117,
Тест в компиляторе из VS 2015: http://rextester.com/XTPUP86306

Пример из #3 тоже должен работать, смотри что у себя делаешь не так.
http://rextester.com/FTPGD31695
3
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
01.11.2016, 23:00  [ТС] 6
DrOffset, через const_cast заработало,спс=)Да и 3 тоже работает...
0
01.11.2016, 23:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 23:00
Помогаю со студенческими работами здесь

Как вызвать метод объекта из контейнера?
Есть абстрактный класс E, производный от CObject, в нем чистая виртуальная войдовская функция....

Как вызвать метод объекта по имени?
Нужно вызвать метод объекта по имени. В строке name содержится имя метода string name =...

Как создать событие или вызвать метод при нажатии на экземпляр объекта (Button)?
List&lt;Button&gt; but = new List&lt;Button&gt;(); private void button1_Click(object sender, EventArgs...

Вызвать метод объекта
Представьте такую ситуацию: есть объект Obj1 имеющий Method1, внутри Obj1 создается объект Obj2 и в...

Как сделать расширяющий метод для статического или абстрактного класса?
Как сделать расширяющий метод для статического или абстрактного класса? public static int...

Как в классе А у объекта класса B вызвать метод класса B ?
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru