Listing 5
generic <typename T>
public ref class Vector
{
int length;
/*1*/ array<T>^ vector;
public:
virtual Object^ Clone()
{
Vector<T>^ v = static_cast<Vector<T>^>(MemberwiseClone());
v->vector = static_cast<array<T>^>(vector->Clone());
return v;
}
};
int main()
{
/*1*/ Vector<int>^ v1 = gcnew Vector<int>(5, 7);
/*2*/ Console::WriteLine("v1: {0}", v1);
/*3*/ Vector<int>^ v2 = static_cast<Vector<int>^>(v1->Clone());
/*4*/ Console::WriteLine("v2: {0}", v2);
/*5*/ v1[0] = 3;
/*6*/ v1[3] = 9;
/*7*/ v2[4] = 1;
/*8*/ Console::WriteLine("v1: {0}", v1);
/*9*/ Console::WriteLine("v2: {0}", v2);
}