Does it make sense to have class constuctor which takes a pointer to a object of the same class. The idea is to copy all the data for from the old object to a new object.
class Shape {
...
public:
Shape(string,string,...)
Shape(Shape*)
}
Shape::Shape(Shape* ref) {
layer = ref->layer;
purpose = ref->purpose;
...
}