Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/50: Рейтинг темы: голосов - 50, средняя оценка - 4.76
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335

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

21.09.2013, 09:14. Показов 10741. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли, чтобы
C++
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
{
void f1() 
{
f2();//если вызвано из B, то вызывается B::f2(), а не A::f2()
}
void f2(){}
}
 
class B : public A
{
void f1() 
{
A::f1();
}
void f2(){}
}
 
int main()
{
B b; b.f1();
return (199*199 - 39000 - 20 * 30 - 1);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2013, 09:14
Ответы с готовыми решениями:

Вызов методов базового и производного классов
Народ, объясните тупому механику раннего связывания. Вывод программы, что ниже, 22. Хотя если вызывать непосредственно функцию f, будет...

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

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

13
Неэпический
 Аватар для Croessmah
18148 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,031
Записей в блоге: 1
21.09.2013, 09:20
Цитата Сообщение от nexen Посмотреть сообщение
Вызов методов производного класса из базового
Базовые классы не знают о своих потомках
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
21.09.2013, 09:31  [ТС]
Croessmah, это то понятно. Но всё же авось есть какой-то способ извратиться.
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
21.09.2013, 10:29
Цитата Сообщение от nexen Посмотреть сообщение
Но всё же авось есть какой-то способ извратиться.
Есть, "виртуальные функции" называется:

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
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
 
class A
{
public:
    void f1() 
    {
        f2();
    }
    
    virtual void f2()
    {
        std::cout << "A::f2()" << std::endl;
    }
};
 
class B : public A
{
public:
    void f1() 
    {
        A::f1();
    }
    
    virtual void f2()
    {
        std::cout << "B::f2()" << std::endl;
    }
};
 
int main()
{
    B b;
    b.f1();
    
    return 0;
}
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.09.2013, 10:50
Цитата Сообщение от nexen Посмотреть сообщение
Croessmah, это то понятно. Но всё же авось есть какой-то способ извратиться.
Почему же извратиться? Есть даже паттерн "шаблонный метод" например.
1
Неэпический
 Аватар для Croessmah
18148 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,031
Записей в блоге: 1
21.09.2013, 11:22
Цитата Сообщение от Fyret Посмотреть сообщение
Есть, "виртуальные функции" называется:
и каким образом они помогут вызвать функцию член производного класса из базового класса?
1
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
21.09.2013, 11:27
Цитата Сообщение от Croessmah Посмотреть сообщение
и каким образом они помогут вызвать функцию член производного класса из базового класса?
Никаким, оно и не требуется. Посмотрите внимательно, чего хочет ТС.
1
Неэпический
 Аватар для Croessmah
18148 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,031
Записей в блоге: 1
21.09.2013, 11:28
Вижу:
Вызов методов производного класса из базового
1
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
21.09.2013, 11:30
Цитата Сообщение от Croessmah Посмотреть сообщение
Вижу:
и ниже код, поясняющий эту неудачную формулировку.
1
21.09.2013, 11:32

Не по теме:

Цитата Сообщение от Fyret Посмотреть сообщение
поясняющий эту неудачную формулировку.
Какой вопрос задан, на тот и отвечаю.

1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
21.09.2013, 11:41  [ТС]
Fyret, требуется. В названии темы был же вопрос, да и в коде тоже.
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
21.09.2013, 11:51
Цитата Сообщение от nexen Посмотреть сообщение
В названии темы был же вопрос, да и в коде тоже.
В коде я увидел "если вызвано из B, то..." и "B b; b.f1();". Ну я не компилятор, стараюсь быть человечным.

Если действительно надо просто вызвать из базового класса метод производного, то никак, смотри пост №2.
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
21.09.2013, 11:56  [ТС]
Fyret, ну так B.f1(), а оттуда в A::f1(), а там уже и вопрос о том, что нужно из A::f1() вызвать B::f2(), а не A::f2()
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
21.09.2013, 12:08
Цитата Сообщение от nexen Посмотреть сообщение
а там уже и вопрос о том, что нужно из A::f1() вызвать B::f2(), а не A::f2()
Если из A::f1() всегда-всегда, независимо ни от чего, вызывать B::f2(), то никак. А если вызвано из B, то виртуальные функции.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2013, 12:08
Помогаю со студенческими работами здесь

Вызов виртуального метода базового класса из указателя производного
Допустим есть такой код: #include &lt;iostream&gt; class Base { public: virtual void f() { std::cout &lt;&lt; &quot;Base\n&quot;; } ...

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

Вызов наследуемых методов из базового класса
Всем доброго времени суток, перейду сразу к сути. Код: class Base { protected: public: virtual void...

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru