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

Ошибка в унаследованном конструкторе

19.01.2014, 14:59. Показов 966. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Битый час сижу и не могу понять, в чем дело. Компилятор на 19 строке выдает ошибку undefined reference to `vtable for baseDMA'
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
#ifndef H_H_INCLUDED
#define H_H_INCLUDED
#include <iostream> // Базовый класс, использующий динамическое выделение памяти
class ABC
{
private:
char*label;
int rating;
public:
ABC(const char*l="null",int r =0);
ABC(const ABC&s);
virtual~ABC();
ABC&operator=(const ABC&r);
virtual void View()=0;
};
class baseDMA:public ABC
{
public:
baseDMA(const char*k = "null",int t = 0):ABC(k,t){} // ЗДЕСЬ ВЫХОДИТ ОШИБКА
baseDMA(const ABC & rs):ABC(rs){}
virtual ~baseDMA();
baseDMA & operator=(const baseDMA & rs);
virtual void View();
};
 
class lacksDMA:public ABC
{
private:
enum {COL_LEN = 40};
char color[COL_LEN];
public:
lacksDMA(const char*c = "blank", const char*l = "null",int r = 0);
lacksDMA (const char*c, const ABC& rs);
virtual void View();
};
 
class hasDMA:public ABC
{
private:
char*style;
public:
hasDMA (const char*s = "none", const char*l = "null", int r = 0);
hasDMA (const char * s, const ABC& rs) ;
hasDMA(const hasDMA & hs) ;
~hasDMA();
hasDMA&operator=(const hasDMA & rs);
virtual void View();
};
#endif // H_H_INCLUDED
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "h.h"
#include <cstring>
#include <iostream>
ABC::ABC(const char*l, int r)
{
label = new char [std::strlen(l) + 1];
std::strcpy(label,l);
rating = r;
}
ABC::ABC(const ABC&rs)
{
label = new char[std::strlen(rs.label)+1] ;
std::strcpy(label, rs.label);
rating = rs.rating;
}
ABC::~ABC()
{
delete[]label;
}
ABC&ABC::operator=(const ABC&rs)
{
if (this == &rs)
return*this;
delete[]label;
label = new char[std::strlen(rs.label)+ 1];
std::strcpy(label, rs.label);
rating = rs.rating;
return *this;
}
void ABC::View()
{
std::cout << "Label: " << label << std::endl; // название
std::cout << "Rating: " << rating << std::endl; // рейтинг
}
 
baseDMA& baseDMA::operator=(const baseDMA&r)
{
    ABC::operator=(r);
    return *this;
}
void baseDMA::View()
{
    ABC::View();
}
// Методы lacksDMA
lacksDMA::lacksDMA(const char*c,const char*l,int r):ABC(l, r)
{
std::strncpy(color,c,39);
color[39] = '\0';
}
lacksDMA::lacksDMA(const char * c, const ABC&rs):ABC(rs)
{
std::strncpy(color, c, COL_LEN-1) ;
color[COL_LEN - 1] = '\0';
}
void lacksDMA::View()
{
ABC::View();
std::cout<<"color: " << color<<std::endl;
}
// Методы hasDMA
hasDMA::hasDMA(const char * s, const char * l,int r):ABC(l,r)
{
style = new char[std::strlen(s)+1];
std::strcpy(style,s);
}
hasDMA::hasDMA(const char*s,const ABC&rs):ABC(rs)
{
style = new char[std::strlen(s)+1];
std::strcpy(style,s);
}
hasDMA::hasDMA(const hasDMA&hs): ABC(hs) // вызывает конструктор копирования базового класса
{
style = new char [std::strlen(hs.style) + 1];
std::strcpy(style, hs.style);
}
hasDMA::~hasDMA()
{
delete[]style;
}
hasDMA&hasDMA::operator=(const hasDMA&hs)
{
if (this == &hs)
return *this;
ABC::operator=(hs); // копирование базовой части
delete[]style; // подготовка к операции new для style
style = new char [std::strlen(hs.style)+1];
std::strcpy(style,hs.style);
return*this;
}
void hasDMA::View()
{
ABC::View();
std::cout << " Style: " << style <<std::endl;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2014, 14:59
Ответы с готовыми решениями:

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске моей программы windows выдает ошибку. Почему ?...

Ошибка в конструкторе
Написал задачу, но она не работает. Условие: Разработать класс Элементарная частица с элементами Название, Группа, Заряд, Масса покоя....

Ошибка в конструкторе
Почему пишет что отсутствуют нужные параметры конструктора? class Aircraft { public: Aircraft(int _maxSpeed, int _maxHeight) { ...

3
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.01.2014, 15:28
У Вас реализации деструктора baseDMA кстати нет.
1
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
19.01.2014, 15:32
Aндерсон_256, в классе baseDMA описан но не реализован деструктор
1
0 / 0 / 1
Регистрация: 02.11.2013
Сообщений: 16
19.01.2014, 16:48  [ТС]
Спасибо, все запустилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2014, 16:48
Помогаю со студенческими работами здесь

Ошибка в конструкторе копирования C++
Помогите, пожалуйста создать конструктор копирования, который будет копировать элемент и добавлять его в список. У меня получился такой...

Ошибка в конструкторе структуры
При компиляции посредством MinGW и запуске выполняет конструктор один раз, а все последующие пропускаются и программа завершается (с кодом...

Если в конструкторе ошибка?
День добрый! Только занялся С++ и хочу понять философию. Есть файл (или много) с данными с которым удобно работать через класс. При...

Ошибка в копирующем конструкторе
#include &quot;stdafx.h&quot; //#include &quot;Person.h&quot; #include &lt;conio.h&gt; #include &lt;string.h&gt; class Person { private: char Firstname ;...

Ошибка в конструкторе класса
Всем доброго времени суток! Есть простая задачка: Написать реализацию класса и короткую программку, использующую все функции-члены. ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru