Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716

Необъяснимая мистика при наследовании класса

17.07.2018, 23:53. Показов 716. Ответов 5

Студворк — интернет-сервис помощи студентам
есть два класса:
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
class AllData {
protected:
    int id;
    int x;
    int y;
public:
    AllData(int id=NULL, int x=NULL, int y=NULL)
    {
        this->id = id;
        this->x = x;
        this->y = y;
    }
    void getdata();
    void setdata(int id, int x, int y);
};
 
class Figure :public AllData
{
protected:
    int p1;
    int p2;
public:
    Figure(int p1=NULL, int p2=NULL):AllData()
    {
        this->p1 = p1;
        this->p2 = p2;
    }
    void getdata();
    void setparam(int p1, int p2);
};
вот в чем дело!
поработав с кодом, проект перестает компилироваться... выдавая ошибку , ту , что на скрине снизу! чтобы исправить ошибку я добавляю слово virtual к прототипам методов внутри класса и все компилируется.
Далее поработав с кодом ( добавив переменную или удалив что то из метода) проект опять не компилиуется выдавая ту же самую ошибку! я удаляю слова virtual и снова все работает корректно! как это так? визуал студия 17 15.5.2
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2018, 23:53
Ответы с готовыми решениями:

Ошибки при наследовании класса
Доброго времени суток!Возникли ошибки при компиляции кода Задание было такое:Создать абстрактный базовый класс Body (тело) с виртуальными...

Ошибка при наследовании класса
Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я смастерил: #ifndef CLASS_H_ #define CLASS_H_ class stack ...

Инициализация полей класса при наследовании
Всем добрый вечер. Возникла у меня небольшая задачка, которую никак не могу решить. Имеем базовый класс с константным полем: class A{...

5
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
18.07.2018, 00:49
Ты ведь не думаешь, что мы разберём эти сообщения?
Слово virtual имеет семантику, оно добавляется не для того, чтобы избежать ошибок, а чтобы объекты классов обладали определённым поведением.
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
18.07.2018, 01:36  [ТС]
а я их тоже не разобрал, интуитивно понял в чем соль и начал шаманить с модификаторами
про virtual в курсе, по вопросу проясните
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
18.07.2018, 04:01
по-моему, всё очевидно. Вот это вот что такое?
void getdata();
Дальше-то что? Где у функции {скобочки} раскрываются и само тело функции записывается? С чего вы решили, что можно просто написать одну строчку " void getdata();" и дальше забить?
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
18.07.2018, 04:15  [ТС]
реализация метода в другом файле
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
18.07.2018, 04:26
почему не показываешь другой файл?
Ну и вообще, хочется видеть и из "другого" и из "этого" файла всю программу целиком, с функцией main и.т.д. как полагается.
Потому что большие сомнения, что всё оно объявлено и связано правильно, раз уж такие ошибки.
Сразу же встаёт вопрос "а этот файл включён в сборку как положено?", ну то есть, он в обозревателе решений вместе со всеми исходниками присутствует, верно же?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2018, 04:26
Помогаю со студенческими работами здесь

Segmentation fault при наследовании класса
Доброго времени суток! Имею класс Initialise и класс Environment. В первом создаются экземпляры движка и прочие сопутствующие вещи....

Деструкторы при наследовании от абстрактного класса
Нужно ли что то писать в деструкторах ~StringObject(){}; ~DoubleObject(){} и нужно ли создавать виртуальный деструктор класса...

Ошибки при наследовании класса от вектора
Пишу программу по СМО, столкнулся с трудностью при попытке сделать наследование очередью Cqueue вектора из STL. Проблема состоит в том,...

Ошибка: undefined reference to при наследовании класса
Здравствуйте форумчане. Пытаюсь наследовать класс MyService от OAuthService и получаю множество ошибок: Ошибка: undefined reference to...

Доступ к переменным базового класса при наследовании
Есть следующий код class Base { protected: int x; Base* enemy; public: Base() {}


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru