Listing 6

public ref class Base : ICloneable
{
     array<int>^ bPair ;
public:
     Base(int i, int j)
     {
          bPair = gcnew array<int>(2) {i, j};
     }
     void SetValue(int i, int j)
     {
          bPair[0] = i;
          bPair[1] = j;
     }
     virtual String^ ToString() override
     {
          return String::Concat("[", bPair[0], ":", bPair[1], "]");
     }
     virtual Object^ Clone() override
     {
          Base^ b = static_cast<Base^>(MemberwiseClone());
          b->bPair = static_cast<array<int>^>(bPair->Clone());
          return b;
     }
};