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

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

21.12.2012, 15:16. Просмотров 1055. Ответов 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);
}
Как сделать, чтобы вызвался метод базового класса без копирования или создания нового объекта?
http://www.cyberforum.ru/cpp-beginners/thread706726.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 15:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вызов виртуального метода базового класса из указателя производного (C++):

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

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

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

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

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

3
Kuzia domovenok
2208 / 1977 / 440
Регистрация: 25.03.2012
Сообщений: 6,930
Записей в блоге: 1
21.12.2012, 15:22 #2
зачем вообще было объявлять функции виртуальными?
0
DiffEreD
1441 / 778 / 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
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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