#ifndef SOLDIERS_H #define SOLDIERS_H ///////////////////////////////////////////////////////////////////////////////// // Soldiers.h - demonstrates inheritance // // // // Jim Fawcett, Summer Short Course, Su2016 // ///////////////////////////////////////////////////////////////////////////////// /* * Found in: Handouts\ShortCourse\Repository\GettingStartedExamples * */ #include #include #include #include "..\Utilities\Utilities.h" class Gear { public: using Name = std::string; Gear(const Name& name); ~Gear(); Name name(); protected: Name name_; }; class Person { public: using Name = std::string; Person(const Name& name); void eat(); void sleep(); Name name(); virtual ~Person(); protected: Name name_; }; class Soldier : public Person { public: using Equipment = std::vector; Soldier(const Name& name); virtual void salute() = 0; void add(const Gear& gear); Equipment& equipment(); private: Equipment equip_; }; class Officer : public Soldier { public: Officer(const Name& name); virtual void salute(); }; class Sergeant : public Soldier { public: Sergeant(const Name& name); virtual void salute(); }; class Private : public Soldier { public: Private(const Name& name); virtual void salute(); }; void show(Soldier& s); #endif