Added 'C_C++/cpp_zh/source/Manager.hpp'

This commit is contained in:
anon 2024-07-22 19:39:19 +02:00
parent 93ee85fe03
commit 1b609a41fa

View File

@ -0,0 +1,70 @@
#ifndef MANAGER_H
#define MANAGER_H
#include "Company.hpp"
class Manager : Employee {
/* fix fizetés
*/
int pay_m;
Company * company_m;
public:
Manager(std::string name, Company * company)
: Employee(name), pay_m(0), company_m(company) {
}
Manager(std::string name, int year_of_birth, int pay, Company * company)
: Employee(name, year_of_birth), pay_m(pay), company_m(company) {
}
// ### ###
int get_cost() override {
return pay_m;
}
/* "ennek megfelelő levonást (egészen 0-ig)" kitűzés teljesítése
*/
int get_pay() {
int r = (signed long long)(company_m->profit() * 0.01);
return std::max(get_cost() + r, 0);
}
virtual void details() {
common_details();
printf(
"\tBase pay: %7d\n"
"\tCalculated pay: %7d\n",
get_cost(),
get_pay()
);
}
bool modify(const std::string &modification) override {
if (Employee::modify(modification)) { return true; }
auto eq_pos = modification.find("=");
try {
if (modification.substr(0, eq_pos) == "pay") {
pay_m = std::stoi(modification.substr(eq_pos+1));
return true;
}
} catch (...) { // lehetséges `invalid_argument` vagy `out_of_range`
return false;
}
return false;
}
std::string serialize() {
return std::string()
+ "m;"
+ Employee::serialize() + ";"
+ std::to_string(pay_m) + ";"
+ company_m->name_m
;
}
};
#endif