Worker: недопустимая инициализация члена "Engenir" не является классом или членом , Worker::Worker отсутсвует экземпляры конструктора

#include <iostream>
#include <string.h>
#include <math.h>
#include <cstdlib>
#include "CursOOP.h"

using namespace std;

class Conpamy
{
public:
    Conpamy(string nmComp_, string name_, string ID_) : nmComp(nmComp_), ID(ID_), name(name_) {}
    string GetnmComp()
    {
        return nmComp;
    }
    void setnmComp(string nmComp)
    {
        this->nmComp = nmComp;
    }
    string Getname()
    {
        return name;
    }
    void setname(string new_name)
    {
        this->name = new_name;
    }
    string GetID()
    {
        return ID;
    }
    void SetID(int new_ID)
    {
        this->ID = new_ID;
    }
    void Display_Conpamy()
    {
        cout << "|" << "-------------------------------------" << "|" << '\n';
        cout << "|" << "Name of the Company: " << nmComp << "            | " << '\n';
        cout << "|" << "-------------------------------------" << "|" << '\n';
    }
    void reg()
    {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "Введите своё имя: "; cin >> name;
        cout << '\n';
        while (name.size() == 0 or cin.fail())
        {
            if (cin.fail()) {
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
                throw invalid_argument("Invalid field values.");
            }
            else {
                cout << "Name size must be > 0" << endl;
                cout << "Enter name" << endl;
            }
        }
        cout << "Придумайте ID: "; cin >> ID; cout << '\n';
        cout << "Введите свою должность: "; string dolj; cin >> dolj; cout << '\n';
        cout << "|" << "-----------------------------------" << "|";
    }
    void prefer()
    {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "Введите названия комании: "; cin >> nmComp;
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }
protected:
    string nmComp;
    string ID;
    string name;
};
class Admin : public Conpamy
{
public:
    Admin(const string& nmConp_, const string& ID_, const string& role_, string& name_) : Conpamy(nmConp_, name_, ID_), role(role_) {}
    void AdminMenu() {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "1. Зарегистрировать информацию об Администраторе" << "        |" << '\n';
        cout << "|" << "2. Вывести информацию об Администраторе" << "        |" << '\n';
        cout << "|" << "3. Назначить действия" << "            |" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        int choice;
        cin >> choice;
        switch (choice) {
        case 1: {
            input_admin();
            break;
        }
        case 2: {
            info3();
            break;
        }
        case 3: {
            ManegerAdmin();
            break;
        }
        default:
            cout << "Вы ввели некорректное значение" << '\n';
            break;
        }
    }
    void input_admin()
    {
        cout << "|" << "-------------------------------------" << "|" << '\n';
        cout << "|" << "Введите своё имя: "; cin >> name;
        cout << "|" << '\n';
        cout << "|" << "-------------------------------------" << "|" << '\n';
        cout << "|" << "-------------------------------------" << "|" << '\n';
        cout << "Введите ID: ";
        cout << "|" << '\n';
        cout << "|" << "-------------------------------------" << "|" << '\n';
    }
    void info3()
    {
        cout << "|" << "------------------------------------" << "|" << '\n';
        cout << "|" << "Ниже будут предоставлены ваши данные" << "|" << '\n';
        cout << "|" << "Данные: " << name << " ID:  " << ID << "                 |" << '\n';
        cout << "|" << "------------------------------------" << "|" << '\n';
    }
    void ManegerAdmin()
    {
        cout << "|" << "--------------------------------------------------------------" << "|" << '\n';
        cout << "|" << "Сотрудник Администрации " << name << " Управление ролями " << role << "|" << '\n';
        cout << "|" << "--------------------------------------------------------------" << "|" << '\n';
    }
protected:
    string role;
};
class HR : public Admin
{
public:
    HR(string nmComp_, string ID_, string role_, string name_, string spez_) : Admin(nmComp_, ID_, role_, name_), spez(spez_) {}
    void HRMenu() {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "1. Зарегистрировать информацию о HR" << "            |" << '\n';
        cout << "|" << "2. Вывести информацию о HR" << "                 |" << '\n';
        cout << "|" << "3. Назначить должность" << "                     |" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        int choice;
        cin >> choice;
        switch (choice) {
        case 1: {
            Input_HR();
            break;
        }
        case 2: {
            info2();
            break;
        }
        case 3: {
            Shr();
            break;
        }
        default:
            cout << "Вы ввели некорректное значение" << '\n';
            break;
        }
    }
    void Input_HR()
    {
        cout << "|" << "----------------------------------" << "|" << '\n';
        cout << "|" << "Введите своё имя: "; setname(name); cout << "|" << '\n';
        while (name.size() == 0 or cin.fail())
        {
            if (cin.fail()) {
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
                throw invalid_argument("Invalid field values.");
            }
            else {
                cout << "Name size must be > 0" << endl;
                cout << "Enter Admin name" << endl;
            }


            cin >> name;
        }
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "Введите ID: "; cin >> ID; cout << "|" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }
    void info2()
    {
        cout << "|" << "----------------------------------" << "|" << '\n';
        cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
        cout << "|" << "Данные:" << name << " " << ID << "|" << '\n';
        while (name.size() == 0 or cin.fail())
        {
            if (cin.fail()) {
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
                throw invalid_argument("Invalid field values.");
            }
            else {
                cout << "Name size must be > 0" << endl;
                cout << "Enter HR name" << endl;
            }

            cin >> name;
        }
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }
    void Shr()
    {
        cout << "|" << "---------------------------------------------------------------------" << "|" << '\n';
        cout << "|" << "Сотрудник из отдела кадров " << name << " нанимает новых сотрудников " << spez << "|" << '\n';
        cout << "|" << "---------------------------------------------------------------------" << "|" << '\n';
    }
protected:
    string spez;
};
class work
{
    void som()
    {
        cout << "|" << "-----------------------------" << "|" << '\n';
        cout << "|" << "Level: " << "|" << '\n';
        cout << "|" << "-----------------------------" << "" << '\n';
    }
};
class Worker : public work, public Admin, public Engenir, public Conpamy
{
public:
    Worker(string& nmComp_, string& name_, string& ID_, string task_, string role_, string spez_) : work(), Admin(nmComp_, ID_, role_, name_), Engenir(nmComp_, name_, ID_, spez_), Conpamy(nmComp_, name_, ID_), task(task_) {}
    void WorkerMenu() {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "1. Зарегистрировать информацию о Рабочем" << "       |" << '\n';
        cout << "|" << "2. Вывести информацию о Рабочем" << "            |" << '\n';
        cout << "|" << "3. Распределить обязанности" << "               |" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        int choice;
        cin >> choice;
        switch (choice) {
        case 1: {
            Input_Worker();
            break;
        }
        case 2: {
            info1();
            break;
        }
        case 3: {
            PerfTask();
            break;
        }
        default:
            cout << "Вы ввели некорректное значение" << '\n';
            break;
        }
    }

    void Input_Worker()
    {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "Введите своё имя: ";
        cin >> name;
        cout << "|" << '\n';
        while (name.size() == 0 or cin.fail())
        {
            if (cin.fail())
            {
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
                throw invalid_argument("Invalid field values.");
            }
            else
            {
                cout << "Name size must be > 0" << endl;
                cout << "Enter Worker name" << endl;
            }
        }

        cin >> Conpamy::ID;
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }

    void info1()
    {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
        cout << "|" << "Данные:" << name << " " << Conpamy::ID << "|" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }

    void PerfTask()
    {
        cout << "|" << "----------------------------" << "|" << '\n';
        cout << "|" << "Рабочий: " << Admin::name << " выполняет задачу: " << task << "|" << '\n';
        cout << "|" << "-----------------------------" << "|" << '\n';
    }

protected:
    string task;
    string name;
};

class Engenir : public Conpamy
{
public:
    Engenir(string nmComp_, string name_, string ID_, string speze_) : Conpamy(nmComp_, name_, ID_), spez1(speze_) {}
    void EngenirMenu() {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "1. Зарегистрировать информацию об Инженере" << "     |" << '\n';
        cout << "|" << "2. Вывести информацию об Инженере" << "          |" << '\n';
        cout << "|" << "3. Вывести информацию о работе над проектом" << " |" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        int choice;
        cin >> choice;
        switch (choice) {
        case 1: {
            Input_engenir();
            break;
        }
        case 2: {
            info();
            break;
        }
        case 3: {
            WorkOnProject();
            break;
        }
        default:
            cout << "Вы ввели некорректное значение" << '\n';
            break;
        }
    }
    void Input_engenir()
    {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "| " << "Введите своё имя: "; cin >> name; cout << "|"; cout << '\n';
        cout << "|" << "------------------------------------" << "|" << '\n';
        cout << "|" << "------------------------------------" << "|" << '\n';
        cout << "Введите ID: "; cin >> ID; cout << '\n';
        cout << "|" << "------------------------------------" << "|" << '\n';
    }
    void info()
    {
        cout << "|" << "----------------------------------" << "|" << '\n';
        cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
        cout << "|" << "Данные:" << name << " " << ID << "|" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
    }
    void WorkOnProject()
    {
        cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
        cout << "|" << "Инженер " << name << " работает над проектом в области " << spez1 << "  |" << '\n';
        cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
    }
    void GoWork()
    {
        cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
        cout << "|" << "Инженер " << name << "время работы с 8:00-19:00" << "|" << '\n';
        cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
    }
protected:
    string spez1;
};


int main()
{
    string new_name;
    string h;
    string dol;
    string nmComp;
    string name;
    string role, spez_;
    int che;
    HR hr(nmComp, "04", "HR manager", name, "Reques new members in the company");
    Admin admin(nmComp, "03", "Adminisrator", name);
    Worker worker(nmComp, 'John', "02", "Creating project", role, spez_); 
    Engenir engenir(nmComp, name, "01", "To reque project");
    Conpamy comp(nmComp, "Som", "0000");
    comp.prefer();

    do {
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cout << "|" << "Выберете, что вас интересует." << "      |" << '\n';
        cout << "|" << "1. Регистрация пользователя" << "        |" << '\n';
        cout << "|" << "2. Вывод информации Администратора." << "|" << '\n';
        cout << "|" << "3. Вывод информации Инженера" << "       |" << '\n';
        cout << "|" << "4. Вывод информации Рабочих" << "        |" << '\n';
        cout << "|" << "5. Вывод информации Hr" << "             |" << '\n';
        cout << "|" << "6. Завершение программы" << "            |" << '\n';
        cout << "|" << "-----------------------------------" << "|" << '\n';
        cin >> h;
        che = stoi(h);
        if (h.size() == 1 and h >= "1" and h <= "9")
        {
            switch (stoi(h)) {
            case 1:
            {
                comp.setnmComp("Ques");
                comp.setname("John");
                comp.SetID(123);
                comp.reg();
                break;
            }
            case 2:
            {
                admin.AdminMenu();
                break;
            }
            case 3:
            {
                engenir.EngenirMenu();
                break;
            }
            case 4:
            {
                worker.WorkerMenu();
                break;
            }
            case 5:
            {
                hr.HRMenu();
                break;
            }
            case 6:
            {
                cout << "|" << "--------------------------" << "|" << '\n';
                cout << "|" << "Работы программы завершена" << "|" << '\n';
                cout << "|" << "--------------------------" << "|" << '\n';
                return 0;
            }

            default: cout << "Вы ввели некорректное значение" << '\n';
                break;
            }`введите сюда код`
        }
    } while (true);
}

Ответы (0 шт):