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

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

29.09.2020, 15:08. Показов 2155. Ответов 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
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
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
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru