+//
+// Create a copy of the passed in object. This version calls the second
+// version of CopyObjects() (with one parameter and a vector return value).
+//
+Object * CopyObject2(Object * obj)
+{
+ void * newObject = NULL;
+
+ switch (obj->type)
+ {
+ case OTLine:
+ newObject = new Line();
+ memcpy(newObject, obj, sizeof(Line));
+ break;
+
+ case OTCircle:
+ newObject = new Circle();
+ memcpy(newObject, obj, sizeof(Circle));
+ break;
+
+ case OTEllipse:
+ newObject = new Ellipse();
+ memcpy(newObject, obj, sizeof(Ellipse));
+ break;
+
+ case OTArc:
+ newObject = new Arc();
+ memcpy(newObject, obj, sizeof(Arc));
+ break;
+
+ case OTDimension:
+ newObject = new Dimension();
+ memcpy(newObject, obj, sizeof(Dimension));
+ break;