#include #include struct Named { virtual std::string_view name() const = 0; virtual ~Named() = default; }; struct Sized { virtual int units() const = 0; virtual ~Sized() = default; }; class Parcel final : public Named, public Sized { public: std::string_view name() const override { return "Crate"; } int units() const override { return 3; } }; int main() { Parcel parcel; const Named& named = parcel; const Sized& sized = parcel; std::cout << named.name() << ": " << sized.units() << " units\n"; }