Здравствуйте! Такая ситуация. Программа для подсчета зарплат сотрудникам.
Сотрудников 3 вида.
Есть базовый класс worker, от него получается 3 наследника: employee, manager, sales. Сведения о сотрудниках хранятся в базе данных.
Вот вытаскиваем мы сведения о каком-то сотруднике, в графе род деятельности - employee. Как создать объект именно класса employee? Т.е. для manager - объект класса manager и т.д.
#include <iostream>
#include <string>
#include <map>
#include <functional>
class Worker
{
public:
virtual std::string name() = 0;
};
class Manager : public Worker
{
public:
virtual std::string name() override
{
return "I am Manager";
}
};
class Employee : public Worker
{
public:
virtual std::string name() override
{
return "I am Employee";
}
};
int main(int argc, char *argv[])
{
std::map<std::string, std::function<Worker*()>> workerFactory;
workerFactory["manager"] = []{return new Manager();};
workerFactory["employee"] = []{return new Employee();};
Worker *worker1 = workerFactory["manager"]();
Worker *worker2 = workerFactory["employee"]();
std::cout << worker1->name() << std::endl;
std::cout << worker2->name() << std::endl;
return 0;
}
Вывод:
I am Manager
I am Employee
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как сделать так, чтобы переменная number в цикле оставляла свое значение, которое будет введено с клавиатуры?
Добрый день! Нужна помощь! Написал программу, заказчик требует оформить ее в виде dll-библиотекиВынес объявления функций и классов в отдельный...
Подскажите у меня есть 2 массива данных, которые соответствуют друг другу (название и адрес): 1Title, 2