//STARTSOLUTION #include #include //ENDSOLUTION #include #include using namespace std; //STARTSOLUTION class Ship { public: Ship(string const& n, string const& p): name{n}, prefix{p} {} virtual ~Ship() = default; virtual string to_string() const { stringstream ss{}; ss << prefix << ": " << name; return ss.str(); } virtual int worthiness() const {} //virtual int worthiness() const = 0; private: string name; string prefix; }; class Frigate: public Ship { public: Frigate(string const& n, string const& p, unsigned short int const g): Ship{n, p}, guns{g} {} string to_string() const override { stringstream ss{}; ss << Ship::to_string() << " - " << guns << " guns"; return ss.str(); } int worthiness() const override { return guns * 2; } private: unsigned short int guns; }; class Transport: public Ship { public: Transport( string const& n, string const& p, unsigned int const c): Ship{n, p}, cargo{c} {} int worthiness() const override { return cargo + 3; } private: unsigned int cargo; }; //ENDSOLUTION int main() { //STARTSOLUTION // vector fleet{}; // fleet.push_back(new Transport{"Pegasus", "HMS", 197}); // fleet.push_back(new Transport{"Rotarius", "HMS", 232}); // fleet.push_back(new Frigate{"Santa Rosa", "HFR", 100}); // fleet.push_back(new Frigate{"Daedalus", "HMS", 150}); // cout << "Fleet:\n\n"; // for( auto sp: fleet ) // { // cout << sp -> to_string() << " | Worthiness: " << sp -> worthiness() << '\n'; // delete sp; // } // cout.flush(); //ENDSOLUTION //given kod vector fleet{}; fleet.push_back(Transport{"Pegasus", "HMS", 197}); fleet.push_back(Transport{"Rotarius", "HMS", 232}); fleet.push_back(Frigate{"Santa Rosa", "HFR", 100}); fleet.push_back(Frigate{"Daedalus", "HMS", 150}); cout << "Fleet:\n\n"; for( auto s: fleet ) { cout << s.to_string() << " | Worthiness: " << s.worthiness() << '\n'; } cout.flush(); }