#include using namespace Upp; struct Number { virtual double Get() const = 0; String ToString() const { return AsString(Get()); } virtual ~Number() {} }; struct Integer : public Number { int n; virtual double Get() const { return n; } Integer() {} }; struct Double : public Number { double n; virtual double Get() const { return n; } Double() {} }; bool operator<(const Number& a, const Number& b) { return a.Get() < b.Get(); } CONSOLE_APP_MAIN { Array num; num.Create().n = 15.5; num.Create().n = 3; DUMPC(num); Sort(num); DUMPC(num); }