Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Riderik
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
#1

Вызов виртуального метода базового класса из указателя производного

21.12.2012, 15:16. Просмотров 1075. Ответов 3
Метки нет (Все метки)

Допустим есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
class Base {
public:
    virtual void f() {
        std::cout << "Base\n";
    }
};
 
class Der: public Base {
public:
    virtual void f() {
        std::cout << "Der\n";
    }
};
 
void Funk(Base* base) {
    base->f();
}
 
int main()
{
    Der* der = new Der;
    Funk(der);
}
Как сделать, чтобы вызвался метод базового класса без копирования или создания нового объекта?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 15:16
Ответы с готовыми решениями:

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать...

Создание указателя типа базового класса на экземпляр производного класса
Добрый день! Иногда видел коды, где создавался указатель типа базового класса...

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса
Класс В является производным от класса А. Определить обработчик исключительной...

Вызов методов производного класса из базового
Возможно ли, чтобы class A { void f1() { f2();//если вызвано из B, то...

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

3
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,173
Записей в блоге: 1
21.12.2012, 15:22 #2
зачем вообще было объявлять функции виртуальными?
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
21.12.2012, 15:28 #3
C++
1
2
3
void Funk(Base* base) {
    base->Base::f();
}
1
Riderik
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
22.12.2012, 01:20  [ТС] #4
yuron_477, спасибо, то что надо.


Kuzia domovenok, это просто пример, показывающий ситуацию, возникшую при комбинировании нескольких интерфейсов.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 01:20

Вызов метода производного класса через указатель на базовый класс
Всем привет ! Подскажите почему , при выполнении строки 45 я получаю ошибку...

Вызов виртуального метода класса наследника из вектора
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class A {...

Вызов метода базового класса из класса-потомка
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод...


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

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

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