#include #include #include class Estimate { public: virtual int minutes() const = 0; virtual ~Estimate() = default; }; class Walking final : public Estimate { public: int minutes() const override { return 40; } }; class Cycling final : public Estimate { public: int minutes() const override { return 18; } }; int main() { std::vector> policies; policies.push_back(std::make_unique()); policies.push_back(std::make_unique()); for (const auto& policy : policies) { std::cout << policy->minutes() << " minutes\n"; } }