Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 1
1

Классы . Непонятная ошибка

27.06.2016, 17:10. Показов 1124. Ответов 4

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

Вопрос, почему при первом варианте все нормально и получаем результат F2 B, F2 B, а при втором выходит ошибка, компилятор говорит "[Error] 'class Bazowa' has no member named 'f4'" , но непонятно почему так , ведь используя f4() обращаемся к class D, а не к Bazowa, так же как это работает с первым примером.Что не так?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
class Bazowa {
 
public:
        
virtual void f2() {cout<<"f2 bazowa"<<endl;};
        void f3() {cout<<"f3 bazowa"<<endl;};
        
};
 
class A: public Bazowa {
public:
virtual void f2() {cout<<"f2 A"<<endl;};
        void f3() {cout<<"f3 A"<<endl;};
        
};
 
class B: public A {
public:
 
virtual void f2() {cout<<"f2 B"<<endl;};
        void f3() {cout<<"f3 B"<<endl;};
        
};
 
class C: public Bazowa {
public: 
virtual void f2() {cout<<"f2 C"<<endl;};
        void f3() {cout<<"f3 C"<<endl;};
    
};
class D: public B {
    public: 
       virtual void f4() {cout<<"f4 D"<<endl;};
        
};
 
 
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char** argv) {
     Bazowa *b;
    D *d = new D; 
    //b = d;
    b->f2();     //второй пример отличается только этой частью   b->f4();
    d->f2();     //                                              d->f4();
     return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2016, 17:10
Ответы с готовыми решениями:

Классы. Непонятная ошибка
Приветствую. Помогите мне пожалуйста разобраться в одной ошибке. Текст задачи:...

Непонятная ошибка(классы и двумерный динамический массив)
Всем привет. Сегодня писал программу для двумерного динамического массива. Должны меняться значения...

Классы, непонятная ошибка в коде
на следующий код: #include &lt;iostream.h&gt; #include &lt;string.h&gt; class Count { privat: char*...

Непонятная ошибка
&quot;Волноводы.Прям_волновод_расчет_размера&quot; не содержит конструктор, который принимает аргументы...

4
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.06.2016, 17:29 2
Потому что он не определён там.
0
 Аватар для lawr
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
27.06.2016, 17:56 3
Лучший ответ Сообщение было отмечено pepsiik15 как решение

Решение

смотрите, есть базовый класс "сотрудник" с базовым методом "вкалывать", и есть производный класс "директор", со своим методом "сношать всех без вазелина". у вас есть бейджик, на котором написано"сотрудник" и собственно сам директор. и вот ты на директора вешаешь бейджик "сотрудник" и пытаешься для него вызвать чисто директорский метод "нагнуть коллектив" а коллектив смотрит на бейдж, видит что там написано "сотрудник" и говорит "директор? да пошел ты в жопу, директор".
1
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
27.06.2016, 18:22 4
Цитата Сообщение от pepsiik15 Посмотреть сообщение
//b = d;
Почему эта строка закомментирована?
Без нее b буден неинициализирован.

Добавлено через 5 минут
Через указатель на Bazova можно вызывать только методы, имеющиеся в классе Bazova.
Причем, если метод виртуальный, то вместо него будет вызван соответствующий метод производного класса D.
Следовательно, т.к. в базовом классе нет метода f4(), то и вызвать его через этот указатель нельзя.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 1
27.06.2016, 22:40 5
Эти "знатоки" бесят уже. Не закомментирована потому, что так было дано в задании -_-
0
27.06.2016, 22:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2016, 22:40
Помогаю со студенческими работами здесь

непонятная ошибка(
// 1.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;cstdio&gt; // бібліотека...

Непонятная ошибка
Пишу программу для вычисления площади многоугольника. Выбивает ошибку о том, что процедура Square...

Непонятная ошибка
procedure TForm1.Exalot(); var i, j, i1, f, shag : Integer; begin f :=30; i1 :=0; ...

Непонятная ошибка
Не могу найти решение ошибки, понятно только, что она выскакивает при первом обращении к массиву,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru