#include //STARTSOLUTION #include #include //ENDSOLUTION using namespace std; // STARTSOLUTION class Soldier { public: Soldier(string const& n, int const p): name{n}, power{p} {} int get_power() { return power; } private: string name; int power; }; class Warband { public: Warband(string const& n): name{n}, soldiers{} {} void add_member( Soldier const& s ) { soldiers.push_back(s); } void add_member( string const& n, int const p ) { add_member( Soldier{n, p} ); } bool operator<(Warband const& other) const { return get_power() < other.get_power(); } int get_power() const { int power{}; for( auto s: soldiers ) { power += s.get_power(); } return power; } friend ostream& operator<<(ostream & os, Warband const& w) { os << w.name; return os; } private: string name; vector soldiers; }; //ENDSOLUTION //STARTSOLUTION // #include "warband.h" //ENDSOLUTION void print_strongest_warband(Warband const& w1, Warband const& w2) { if( w1 < w2 ) { cout << w2 << " is the strongest warband" << endl; } else { cout << w1 << " is the strongest warband" << endl; } } int main() { Warband w1{"Warband 1"}; Warband w2{"Warband 2"}; w1.add_member(Soldier{"s1", 8}); w1.add_member(Soldier{"s2", 5}); w2.add_member(Soldier{"s3", 3}); w2.add_member(Soldier{"s4", 12}); print_strongest_warband(w1, w2); w1.add_member("s5", 2); print_strongest_warband(w1, w2); }