Added 'C_C++/cpp_zh/source/Manager.hpp'
This commit is contained in:
parent
93ee85fe03
commit
1b609a41fa
70
C_C++/cpp_zh/source/Manager.hpp
Normal file
70
C_C++/cpp_zh/source/Manager.hpp
Normal 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
|
Loading…
x
Reference in New Issue
Block a user