Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.05.2020
Сообщений: 78

Ошибка "Нельзя создать экземпляр абстрактного класса"

29.09.2020, 15:08. Показов 2215. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу прогу, где от класса Worker наследуются WorkerHours и WorkerCommiss. В классе Worker есть метод pay(), который является виртуальным и реализован в производных методах. Вроде всё правильно и должно работать, но чо-то не работает :/ Ошибка про то, что нельзя создать экземпляр абстрактного класса. Почитал похожие темы, но решения так и не нашёл

Файл "Worker.h"

C++ (Qt)
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
#pragma once
#include<iostream>
#include"Sex.h"
 
using namespace std;
 
class Worker
{
private:
 
protected:
    string typeWorker;
    string _fullName;
    Sex _sex;
public:
    Worker(string name, Sex sex);
    void setName(string name);
    string getName() const;
    void setSex(Sex sex);
    Sex getSex() const;
    string getTypeWorker() const;
    virtual void work(float sizeWork) = 0;
    //virtual float pay() { return 0; }
    virtual float pay() = 0; 
};
Файл "Worker.cpp"

C++ (Qt)
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
#include "Worker.h"
 
Worker::Worker(string name, Sex sex)
{
    setName(name);
    setSex(sex);
}
 
void Worker::setName(string name)
{
    if (name != "")
        _fullName = name;
}
 
string Worker::getName() const
{
    return _fullName;
}
 
void Worker::setSex(Sex sex)
{
    if (sex >= Sex(0) && sex <= Sex(3))
        _sex = sex;
}
 
Sex Worker::getSex() const
{
    return _sex;
}
 
string Worker:: getTypeWorker() const
{
    return typeWorker; 
}
Файл "WorkerHours"

C++ (Qt)
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
#include "WorkerHours.h"
 
WorkerHours::WorkerHours(string typeWorker, string fullName, Sex sex, float payment, float overPayment, float normalHours):Worker(fullName, sex)
{
    typeWorker = "WorkerHours";
    setPayment(payment);
    setOverPayment(overPayment);
    setNormalHours(normalHours);
    _finalHours = 0;
}
 
void WorkerHours::setPayment(float payment)
{
    if (payment > 0)
        _payment = payment;
}
 
float WorkerHours::getPayment() const
{
    return _payment;
}
 
void WorkerHours::setOverPayment(float overPayment)
{
    if (overPayment >= 0)
    _overPayment = overPayment;
}
 
float WorkerHours::getOverPayment() const
{
    return _overPayment;
}
 
void WorkerHours::setNormalHours(float normalHours)
{
    if (normalHours > 0)
    _normalHours = normalHours;
}
 
float WorkerHours::getNormaHours() const
{
    return _normalHours;
}
 
float WorkerHours::getFinalHours() const
{
    return _finalHours;
}
 
void WorkerHours::work(float sizeWork) 
{
    if(sizeWork>=0)
    _finalHours += sizeWork;
}
 
float WorkerHours::pay()
{
    float sum = _payment*_normalHours;
    if (_finalHours > _normalHours) {
        float dop=_finalHours-_normalHours;
        sum += (dop * _overPayment);
    }
    _finalHours = 0;
 
    return sum;
}
Файл "WorkerCommiss"

C++ (Qt)
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
#include "WorkerCommiss.h"
 
WorkerCommiss::WorkerCommiss(string typeWorker, string fullName, Sex sex, float staticPayment, float percent) :Worker(fullName, sex)
{
    typeWorker = "WorkerCommiss";
    setStaticPayment(staticPayment);
    setPercent(percent);
    _sells = 0;
}
 
void WorkerCommiss::setStaticPayment(float staticPayment)
{
    if (staticPayment > 0)
        _staticPayment = staticPayment;
}
 
float WorkerCommiss::getStaticPayment() const
{
    return _staticPayment;
}
 
void WorkerCommiss::setPercent(float percent)
{
    if (percent > 0 && percent <= 100)
        _percent = percent;
}
 
float WorkerCommiss::getPercent() const 
{
    return _percent;
}
 
float WorkerCommiss::getSells() const
{
    return _sells;
}
 
void WorkerCommiss::work(float sizeWork)
{
    if(sizeWork>=0)
    _sells += sizeWork;
}
 
float WorkerCommiss::pay()
{
    float _final=_staticPayment;
    _final += (_sells * _percent);    
    _sells = 0;
    return _final;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2020, 15:08
Ответы с готовыми решениями:

как исправить Ошибка 8 error C2259: Tabl: невозможно создать экземпляр абстрактного класса
имеется абстрактный класс, у нее есть 4 виртуальных функций: запись и чтение с помощью С и С++ имеется класс Tabl производный от...

Невозможно создать экземпляр абстрактного класса
Всем привет, нужна помощь, срочно. Есть класс интерфейс. От которого наследуется класс Stationery, от него уже 2 других класса и тд....

Не получается создать экземпляр абстрактного класса
в общем я очень тупой, буду благодарен за умные советы, имеется класс object и наследуемые от него triangle и uravn вот фрагмент из мэйна ...

23
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
29.09.2020, 16:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Ogurechik Посмотреть сообщение
А вообще, есть ещё какие-либо способы, может даже не через вектор, чтоб была 1 структура, которая содержит объекты разных классов
std::variant - https://en.cppreference.com/w/cpp/utility/variant
0
0 / 0 / 0
Регистрация: 29.05.2020
Сообщений: 78
29.09.2020, 16:22  [ТС]
_stanislav, DrOffset, большое спасибо за помощь. Хорошего дня
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.09.2020, 16:24
Цитата Сообщение от Ogurechik Посмотреть сообщение
большое спасибо за помощь. Хорошего дня
перечитай потом еще раз все ответы.
0
0 / 0 / 0
Регистрация: 29.05.2020
Сообщений: 78
29.09.2020, 16:29  [ТС]
обязательно. теперь ещё и книгу читать надо )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2020, 16:29

Невозможно создать экземпляр абстрактного класса
work.cpp #include &quot;student.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include...

Невозможно создать экземпляр абстрактного класса
Делаю курсовик, сейчас на начальной стадии (а как же еще к концу сессии :D). Код, который я сейчас покажу еще &quot;сырой&quot;, а точнее...

error C2259: last: невозможно создать экземпляр абстрактного класса
Только начала изучать абстрактные классы, и сразу же проблемы. error C2259: last: невозможно создать экземпляр абстрактного класса. Не знаю...

error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса
error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса Пожалуйста, помогите main #include...

Ошибка: невозможно создать объект абстрактного класса
программа для заменны слова в файле, на введенное с клавы слово!реализовать нужно через интерфейс! ошибка в строчке Text edit; не...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru