Would it not be simpler (and therefore better) to just use the default copy constructor?