fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <string>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. class Employee
  10. {
  11. protected:
  12. int ID;
  13. string Name;
  14. string Role;
  15.  
  16. public:
  17. Employee(int empID, string empName, string empRole)
  18. {
  19. ID=empID;
  20. Name=empName;
  21. Role=empRole;
  22. }
  23. virtual void showDetails()=0;
  24. virtual void addWorker(shared_ptr<Employee> newWorker)=0;
  25. virtual void deleteWorker(shared_ptr<Employee> employee)=0;
  26. virtual ~Employee(){}
  27. int getID(){return ID;}
  28. };
  29.  
  30. class Worker : public Employee
  31. {
  32. public:
  33. Worker(int empID, string empName, string empRole)
  34. : Employee(empID, empName, empRole) {}
  35.  
  36. void showDetails()
  37. {
  38. cout<<Name<<" ("<<ID<<") "<<Role<<endl;
  39. }
  40.  
  41. void addWorker(shared_ptr<Employee> newWorker){};
  42. void deleteWorker(shared_ptr<Employee> employee){};
  43. };
  44.  
  45. class Supervisor : public Employee
  46. {
  47. private:
  48. vector<shared_ptr<Employee>> myTeam;
  49.  
  50. public:
  51. Supervisor(int empID, string empName, string empRole)
  52. : Employee(empID, empName, empRole) {}
  53.  
  54. void addWorker(shared_ptr<Employee> newWorker)
  55. {
  56. myTeam.push_back(newWorker);
  57. }
  58.  
  59. void deleteWorker(shared_ptr<Employee> employee)
  60. {
  61. int pos=0;
  62. for (auto temp : myTeam)
  63. {
  64. if (temp->getID()!=employee->getID())
  65. ++pos;
  66. else {
  67. myTeam.erase(myTeam.begin()+pos);
  68. //break;
  69. }
  70. }
  71. }
  72.  
  73. void showDetails()
  74. {
  75. cout<<Name<<" ("<<ID<<") "<<Role<<" ---->"<<endl;
  76. for (auto worker : myTeam)
  77. {
  78. worker->showDetails();
  79. }
  80. cout<<endl;
  81. }
  82. };
  83.  
  84. int main()
  85. {
  86. shared_ptr<Employee> Tushar(new Worker(376653,"Tushar Shah","Team mate"));
  87. shared_ptr<Employee> Ranjeet(new Worker(469725,"Ranjeet Aglawe","Team mate"));
  88. shared_ptr<Employee> Kiran(new Supervisor(137581,"Kiran Asher","Manager"));
  89. shared_ptr<Employee> Namita(new Supervisor(122110,"Namita Gawde","Manager"));
  90. shared_ptr<Employee> Rumman(new Supervisor(122022,"Rumman Sayed","Manager"));
  91. shared_ptr<Employee> Rajendra(new Supervisor(111109,"Rajendra Redkar","Manager"));
  92. shared_ptr<Employee> Sameer(new Supervisor(106213,"Sameer Rajadhyax","Group Lead"));
  93.  
  94. Kiran->addWorker(Tushar);
  95. Kiran->addWorker(Ranjeet);
  96. Sameer->addWorker(Kiran);
  97. Sameer->addWorker(Namita);
  98. Sameer->addWorker(Rumman);
  99. Sameer->addWorker(Rajendra);
  100.  
  101. Sameer->showDetails();
  102.  
  103. Sameer->deleteWorker(Rumman);
  104. Sameer->showDetails();
  105.  
  106. return 0;
  107. }
  108.  
Runtime error #stdin #stdout 0s 3040KB
stdin
Standard input is empty
stdout
Sameer Rajadhyax (106213) Group Lead ---->
Kiran Asher (137581) Manager ---->
Tushar Shah (376653) Team mate
Ranjeet Aglawe (469725) Team mate

Namita Gawde (122110) Manager ---->

Rumman Sayed (122022) Manager ---->

Rajendra Redkar (111109) Manager ---->