#include #include #include struct Destination { std::string name; int dist; }; class Route_Planner { public: Route_Planner() : destinations{} {} int total_distance() const { int res {}; for (Destination const& d : destinations) { res += 2 * d.dist; } return res; } void add(Destination const& rhs) { destinations.push_back(rhs); } Route_Planner& operator+=(Destination const& rhs) { add(rhs); return *this; } std::ostream& print(std::ostream& os) const { for (Destination const& d : destinations) { os << d.name << ": " << d.dist << std::endl; } return os; } private: std::vector destinations; }; std::ostream& operator<<(std::ostream& os, Route_Planner const& rhs) { return rhs.print(os); } int main() { Route_Planner rp { }; rp.add( Destination{"willys", 100} ); rp.add( Destination{"coop", 3} ); rp.add( Destination{"hemköp", 4} ); rp.add( Destination{"lidl", 1} ); rp.add( Destination{"ica", 7} ); std::cout << "=== Alla butiker ===" << std::endl; std::cout << "# Total distans: " << rp.total_distance() << std::endl; std::cout << rp << std::endl; return 0; }