Manual_dev

Space themed smart Pointer exercise

Jul 21st, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3. #include <string>
  4.  
  5. class CrewMember
  6. {
  7. std::string name;
  8.  
  9. unsigned int member_id_number;
  10. // variable to count total crew objects
  11. inline static unsigned int crew_members_total = 0;
  12.  
  13. public:
  14.  
  15. CrewMember();
  16.  
  17. ~CrewMember();
  18.  
  19. inline static unsigned int GetTotalCrewMembers(){ return CrewMember::crew_members_total; }
  20.  
  21. const unsigned int GetMemberIdNumber(){ return member_id_number; }
  22. };
  23.  
  24. //CrewMember.cpp
  25.  
  26. CrewMember:: CrewMember()
  27. {
  28. std::cout << "A crew member has joined" << std::endl;
  29. member_id_number = crew_members_total;
  30. crew_members_total++;
  31. }
  32.  
  33. CrewMember::~CrewMember()
  34. {
  35.  
  36. }
  37.  
  38. class SpaceShip
  39. {
  40.  
  41.  
  42. /*
  43.  
  44. std::unique_ptr<CrewMember[3][3]> ship_crew_members = std::make_unique< new CrewMember[3][3]>;
  45.  
  46. // generates error
  47.  
  48. call to non-constexpr function 'void* operator new [](std::size_t)'
  49. std::unique_ptr<CrewMember[3][3]> ship_crew_members = std::make_unique< new CrewMember[3][3]>;
  50. ^
  51. cannot resolve overloaded function 'make_unique' based on conversion to type 'std::unique_ptr<CrewMember [3][3]>'
  52. std::unique_ptr<CrewMember[3][3]> ship_crew_members = std::make_unique< new CrewMember[3][3]>;
  53.  
  54. */
  55.  
  56. // compiles fine
  57. std::unique_ptr<CrewMember[3][3]> ship_crew_members;
  58.  
  59. public:
  60. SpaceShip();
  61. ~SpaceShip();
  62.  
  63. };
  64.  
  65. // SpaceShip.cpp
  66.  
  67. SpaceShip:: SpaceShip()
  68. {
  69.  
  70. }
  71.  
  72. SpaceShip::~SpaceShip()
  73. {
  74.  
  75. }
  76.  
  77. class Galaxy
  78. {
  79. std::unique_ptr<SpaceShip> orions_comet;
  80. public:
  81.  
  82. Galaxy();
  83. ~Galaxy();
  84.  
  85. };
  86.  
  87. // Galaxy.cpp
  88.  
  89. Galaxy:: Galaxy()
  90. {
  91.  
  92. }
  93.  
  94. Galaxy::~Galaxy()
  95. {
  96.  
  97. }
  98.  
  99. int main() {
  100.  
  101. Galaxy far_away_galaxy;
  102.  
  103. std::cout << "The Total Crew mebers are " << CrewMember::GetTotalCrewMembers() << std::endl;
  104. std::cout <<"la codigo esta bien" << std::endl;
  105.  
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment