fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class Worker
  8. {
  9. private:
  10. std::string m_name;
  11.  
  12. public:
  13. Worker(std::string name)
  14. : m_name(name)
  15. {
  16. }
  17.  
  18. std::string getName() { return m_name; }
  19. };
  20.  
  21. class Department
  22. {
  23. private:
  24. std::vector<Worker*> m_worker;
  25.  
  26. public:
  27.  
  28. void add(Worker *worker)
  29. {
  30. m_worker.push_back(worker);
  31. }
  32.  
  33. // friend std::ostream& operator<<(std::ostream& out, const Department
  34. // &department)
  35. // {
  36. // out << "Departments:";
  37. // for (unsigned int count = 0; count < department.m_worker.size();
  38. // ++count)
  39. // out << department.m_worker[count]->getName()<< ' ';
  40. // out << '\n';
  41. //
  42. // return out;
  43. // }
  44.  
  45. };
  46.  
  47. int main()
  48. {
  49. // Создаем Работников вне области видимости класса Department
  50. Worker *w1 = new Worker("Anton");
  51. Worker *w2 = new Worker("Ivan");
  52. Worker *w3 = new Worker("Max");
  53.  
  54. {
  55. // Создаем Отдел и передаем Работников в качестве параметров
  56. Department department; // содаем пустой Отдел
  57. department.add(w1);
  58. department.add(w2);
  59. department.add(w3);
  60.  
  61. // std::cout << department;
  62.  
  63. } // department выходит из области видимости и уничтожается здесь
  64.  
  65. std::cout << w1->getName() << " still exists!\n";
  66. std::cout << w2->getName() << " still exists!\n";
  67. std::cout << w3->getName() << " still exists!\n";
  68.  
  69. delete w1;
  70. delete w2;
  71. delete w3;
  72.  
  73. return 0;
  74. }
  75.  
Success #stdin #stdout 0.01s 5540KB
stdin
Standard input is empty
stdout
Anton still exists!
Ivan still exists!
Max still exists!