devi fare il tuo metodo clone

codice:
TuoOggettoDaClonare clone(TuoOggettoDaClonare obj);
e qui dentro usi l'interfaccia pubblica dell'oggetto per clonarlo (in profondità ovviamente)